library('tidyverse', quietly = T)
library('ggplot2', quietly = T)
library('dplyr', quietly = T)
library('readxl', quietly = T)
library('linelist', quietly = T)
library('googlesheets4', quietly = T)
library('naniar', quietly = T)
library('gridExtra', quietly = T)
library('snakecase', quietly = T)
library('epitools', quietly = T)
library('meta', quietly = T)
library('knitr', quietly = T)
library('kableExtra', quietly = T)
library('snakecase', quietly = T)
library('here', quietly = T)
library('flextable', quietly = T)## [1] "C:/Users/ucbtds4/Google Drive/PhD/COVID-19/Smoking and COVID data/smoking_covid/smoking_covid"
sheets_id <- as_sheets_id('https://docs.google.com/spreadsheets/d/15avypGR8ypJngWQEmFIzFrOOwXPY3xezUHQU6jgV7d0/edit?usp=sharing')
search_details <- read_sheet(sheets_id, range = 'article_screening')
data_study_general <- read_sheet(sheets_id, range = 'general_details')
table_1 <- read_sheet(sheets_id, sheet = 'pop_descriptives')
table_2 <- read_sheet(sheets_id, sheet = 'testing')
table_3 <- read_sheet(sheets_id, sheet = 'hospitalisation')
table_4 <- read_sheet(sheets_id, sheet = 'severity')
table_5 <- read_sheet(sheets_id, sheet = 'mortality')
table_6 <- read_sheet(sheets_id, sheet = 'quality_appraisal')search_details <- search_details %>%
clean_data() %>%
rename(date_screened = date_screening_in_format_2020_05_22) %>%
write_rds(here::here('data_clean', 'search_details.rds'))
protect_columns_1 <- names(data_study_general) %in% 'doi'
data_study_general <- data_study_general %>%
rename('notes' = 11, date_published = `date_published_format(2020-05-12)`) %>%
clean_data(protect = protect_columns_1) %>%
mutate(study_id = 1:length(lead_author)) %>%
write_rds(here::here('data_clean', 'data_study_general.rds'))
review_details <- data_study_general %>%
select(lead_author, date_published, country, review_version, study_id) %>%
write_rds(here::here('data_clean', 'review_details.rds'))
table_1 <- table_1 %>%
clean_data() %>%
mutate(., lower_range = sub('\\_.*', '', .$range)) %>%
mutate(., upper_range = sub('.*_', '',.$range,)) %>%
select(1:9, 22:23, 11:21) %>%
filter(!is.na(lead_author)) %>%
left_join(., review_details, by = 'lead_author') %>%
write_rds(here::here('data_clean', 'table_1.rds'))
table_2 <- table_2 %>%
clean_data() %>%
filter(data_on_testing == TRUE) %>%
left_join(., review_details, by = 'lead_author') %>%
write_rds(here::here('data_clean', 'table_2.rds'))
table_3 <- table_3 %>%
clean_data() %>%
filter(data_on_hospitalisation == TRUE) %>%
left_join(., review_details, by = 'lead_author') %>%
write_rds(here::here('data_clean', 'table_3.rds'))
table_4 <- table_4 %>%
clean_data() %>%
filter(data_disease_severity == TRUE) %>%
left_join(., review_details, by = 'lead_author') %>%
write_rds(here::here('data_clean', 'table_4.rds'))
table_5 <- table_5 %>%
clean_data() %>%
filter(data_on_deaths == TRUE) %>%
left_join(., review_details, by = 'lead_author') %>%
write_rds(here::here('data_clean', 'table_5.rds'))
protect_columns_2 <- !names(table_6) %in% 'Author'
table_6 <- table_6 %>%
clean_data(protect = protect_columns_2) %>%
left_join(., table_1 %>%
select(lead_author,
not_stated,
missing,
total) %>%
rename('author' = lead_author),
by = 'author') %>%
mutate(missingness = rowSums(.[17:18], na.rm = T),
missingness_percentage = (missingness/total)*100) %>%
select(-c(not_stated, missing, total, missingness)) %>%
write_rds(here::here('data_clean', 'table_6.rds'))
a <- data_study_general %>%
select(lead_author, date_published, source, study_id) %>%
rename('Lead Author' = lead_author,
'Date Published' = date_published,
'Publication Source' = source,
'Study ID' = study_id)
a$`Lead Author` <- to_upper_camel_case(a$`Lead Author`, sep_out = ", ")
a$`Publication Source` <- to_title_case(a$`Publication Source`)
a$`Publication Source` <- if_else(str_length(a$`Publication Source`) < 5,
toupper(a$`Publication Source`),
to_title_case(a$`Publication Source`))
a <- flextable(a)%>%
set_caption(a, caption = 'All studies included in data extraction') %>%
set_table_properties(width = 1, layout = 'autofit') %>%
save_as_docx(a, path = here('data_clean', 'all_studies.docx'))All data has now been stored in .rds format in the /data_clean folder. This can be analysed outside of the report using pre-generated scripts or user created scripts.
date_of_update <- Sys.Date()
prev_versions <- c('v1', 'v2', 'v3')
#This can categorise which studies we want to look at
current_version <- c('v4')
#This will categorise which studies we are including in the current report
analysed_versions <- c('v1', 'v2', 'v3', 'v4')
#This will incorporate all studies into the current version of the report
exclude_from_analysis <- c('isaric_1', 'isaric_2', 'isaric_3', 'miyara_old', 'isaric_4', 'mehra')
exclude_from_qa <- c('isaric_1', 'isaric_2', 'isaric_3', 'miyara', 'isaric_4', 'mehra')We are currently on Version v4. We have excluded from the analysis the following studies: isaric_1, isaric_2, isaric_3, miyara_old, isaric_4, and mehra
data_study_general <- data_study_general %>%
filter(review_version %in% analysed_versions) %>%
filter(!(lead_author %in% exclude_from_analysis)) %>%
write_csv(., here::here('data_clean', 'data_study_general.csv'))
table_1 <- table_1 %>%
filter(review_version %in% analysed_versions) %>%
select(-review_version) %>%
filter(!(lead_author %in% exclude_from_analysis))
table_2 <- table_2 %>%
filter(review_version %in% analysed_versions) %>%
select(-review_version) %>%
filter(!(lead_author %in% exclude_from_analysis))
table_3 <- table_3 %>%
filter(review_version %in% analysed_versions) %>%
select(-review_version) %>%
filter(!(lead_author %in% exclude_from_analysis))
table_4 <- table_4 %>%
filter(review_version %in% analysed_versions) %>%
select(-review_version) %>%
filter(!(lead_author %in% exclude_from_analysis))
table_5 <- table_5 %>%
filter(review_version %in% analysed_versions) %>%
select(-review_version) %>%
filter(!(lead_author %in% exclude_from_analysis))
table_6 <- table_6 %>%
filter(!(author %in% exclude_from_qa))
a <- data_study_general %>%
select(lead_author, date_published, source, study_id) %>%
rename('Lead Author' = lead_author,
'Date Published' = date_published,
'Publication Source' = source,
'Study ID' = study_id)
a$`Lead Author` <- to_upper_camel_case(a$`Lead Author`, sep_out = ", ")
a$`Publication Source` <- to_title_case(a$`Publication Source`)
a$`Publication Source` <- if_else(str_length(a$`Publication Source`) < 5,
toupper(a$`Publication Source`),
to_title_case(a$`Publication Source`))
a <- flextable(a)%>%
set_table_properties(width = 1, layout = 'autofit') %>%
set_caption(caption = 'Studies included in the current analysis')
save_as_docx(a, path = here('data_clean', 'included_studies.docx'))#Number screened to add to PRISMA
from_prev_version <- data_study_general %>%
filter(review_version %in% prev_versions) %>%
filter(!(lead_author %in% exclude_from_analysis)) %>%
tally()
source(here::here('scripts', 'prisma_function.R'))
PRISMA_v4 <- PRISMA(search_details)
PRISMA_v4 <- as.data.frame(PRISMA_v4)
a <- PRISMA_v4 %>%
t() %>%
as.data.frame() %>%
add_rownames() %>%
flextable() %>%
set_header_labels(rowname = 'PRISMA category',
V1 = 'Number of studies') %>%
set_table_properties(width = 1, layout = 'autofit') %>%
set_caption(caption = 'Data for PRISMA')
save_as_docx(a, path = here('data_clean', 'PRISMA_details.docx'))#Countries
country <- table_1$country %>%
to_upper_camel_case() %>%
recode(., 'Usa' = 'USA', 'Uk' = 'UK', 'SaudiArabia' = 'Saudi Arabia') %>%
table() %>%
as.data.frame() %>%
arrange(desc(Freq)) %>%
rename('Country' = 1,
'Number' = 2)
ggplot(country, aes(x = reorder(Country, desc(-Number)), y = Number))+
geom_col()+
coord_flip()+
theme_bw()+
labs(title = 'Countries where studies were performed',
y = 'Number of studies',
x = 'Country')Country | Number |
China | 36 |
USA | 25 |
UK | 10 |
Mexico | 6 |
Spain | 6 |
France | 5 |
Italy | 4 |
Multiple | 3 |
Israel | 2 |
Finland | 1 |
Iran | 1 |
Korea | 1 |
Kuwait | 1 |
Saudi Arabia | 1 |
Switzerland | 1 |
#Setting
setting <- to_upper_camel_case(data_study_general$study_setting, sep_out = ' ') %>%
table(.) %>%
sort('Number of studies', decreasing = T) %>%
as.data.frame() %>%
arrange(desc(Freq)) %>%
rename('Setting' = 1,
'Number' = 2)
a <- flextable(setting) %>%
set_table_properties(width = 0.5, layout = 'autofit')
aSetting | Number |
Hospital | 81 |
Community And Hospital | 16 |
Community | 4 |
Not Stated | 1 |
Quarantine Centre | 1 |
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7 96 316 199095 1052 17425445
## [1] 20506745
#Source of data
table_1$data_source %>%
recode('electronic_health_records' = 'Electronic health record',
'case_report_form' = 'Case report form',
'not_stated' = 'Not stated') %>%
table() %>%
as.data.frame() %>%
arrange(desc(Freq)) %>%
rename('Data source' = 1,
'Number' = 2) %>%
flextable() %>%
set_table_properties(width = 0.5, layout = 'autofit')Data source | Number |
Electronic health record | 62 |
Case report form | 26 |
Not stated | 15 |
#Studies reporting smokers
current_smok <- table_1 %>%
filter(., current_smoker != 'NA')
nrow(current_smok)## [1] 69
#Studies reporting former smokers
former_smok <- table_1 %>%
filter(., former_smoker != 'NA')
nrow(former_smok)## [1] 32
#Studies reporting never smokers
never_smok <- table_1 %>%
filter(., never_smoker != 'NA')
nrow(never_smok)## [1] 30
#Studies reporting current/former smokers
current_former_smok <- table_1 %>%
filter(., current_former_smoker != 'NA')
nrow(current_former_smok)## [1] 34
#Studies reporting missing data
missing_smok <- table_1 %>%
filter(., missing != 'NA')
nrow(missing_smok)## [1] 27
#Studies reporting never/unknown
never_smok_unknown <- table_1 %>%
filter(., never_smoker_unknown != 'NA')
nrow(never_smok_unknown)## [1] 8
#Studies with not stated
smok_not_stated <- table_1 %>%
filter(., not_stated != 'NA')
nrow(smok_not_stated)## [1] 64
#Studies reporting current, former and never smoking status
full_smoking_status <- table_1 %>%
filter(lead_author %in% current_smok$lead_author) %>%
filter(lead_author %in% former_smok$lead_author) %>%
filter(lead_author %in% never_smok$lead_author)
b <- full_smoking_status %>%
select(lead_author, sample_size, current_smoker, former_smoker, never_smoker, study_id) %>%
rename('Lead author' = lead_author,
'Sample size' = sample_size,
'Current smokers' = current_smoker,
'Former smokers' = former_smoker,
'Never smokers' = never_smoker,
'Study ID' = study_id)
b$`Lead author` <- to_upper_camel_case(b$`Lead author`, sep_out = ", ")
b <- flextable(b) %>%
set_table_properties(width = 1, layout = 'autofit') %>%
set_caption(caption = 'Studies with complete smoking status data')
bLead author | Sample size | Current smokers | Former smokers | Never smokers | Study ID |
Guan, Ni | 1099 | 137 | 21 | 927 | 1 |
Rentsch | 3528 | 159 | 179 | 216 | 18 |
Argenziano | 1000 | 49 | 179 | 772 | 29 |
Hadjadj | 50 | 1 | 9 | 40 | 38 |
Niedzwiedz | 1474 | 42745 | 147235 | 235711 | 39 |
Miyara, Updated | 479 | 32 | 152 | 286 | 46 |
Gaibazzi | 441 | 21 | 44 | 376 | 49 |
Cho | 1331 | 253 | 359 | 719 | 51 |
Robilotti | 423 | 9 | 159 | 248 | 53 |
Opensafely, Collaborative | 17425445 | 2962373 | 5737545 | 8000204 | 54 |
Shah | 316 | 52 | 56 | 133 | 57 |
Kolin | 1474 | 213 | 592 | 657 | 59 |
Feng | 476 | 31 | 13 | 410 | 62 |
Yanover | 4353 | 514 | 129 | 3710 | 67 |
Hamer | 387109 | 37426 | 134855 | 214828 | 68 |
De, Lusignan | 3802 | 413 | 1753 | 1125 | 71 |
Feuth | 28 | 3 | 8 | 17 | 74 |
Parrotta | 76 | 2 | 20 | 52 | 76 |
Ip | 2512 | 77 | 448 | 1620 | 83 |
Al, Hindawi | 31 | 1 | 22 | 8 | 91 |
Russell | 106 | 7 | 26 | 42 | 95 |
Israel | 24087 | 4114 | 3141 | 16832 | 100 |
Docherty | 20133 | 852 | 4364 | 8968 | 108 |
#Studies reporting current or current/former and never smoking
semi_full_smoking_status <- table_1 %>%
filter(lead_author %in% current_former_smok$lead_author) %>%
filter(lead_author %in% never_smok$lead_author) %>%
filter(!lead_author %in% full_smoking_status$lead_author)
b <- semi_full_smoking_status %>%
select(lead_author, sample_size, current_former_smoker, never_smoker, study_id) %>%
rename('Lead author' = lead_author,
'Sample size' = sample_size,
'Current/former smokers' = current_former_smoker,
'Never smokers' = never_smoker,
'Study ID' = study_id)
b$`Lead author` <- to_upper_camel_case(b$`Lead author`, sep_out = ", ")
b <- flextable(b) %>%
set_table_properties(width = 1, layout = 'autofit') %>%
set_caption(caption = 'Studies with partially complete smoking status (current/former rather than current and former)')
bLead author | Sample size | Current/former smokers | Never smokers | Study ID |
Guan, Liang | 1590 | 111 | 1479 | 2 |
Richardson | 5700 | 558 | 3009 | 31 |
Rodriguez | 7 | 3 | 4 | 35 |
Zheng, Xiong | 73 | 8 | 65 | 45 |
Giacomelli | 233 | 70 | 163 | 56 |
Palaiodimos | 200 | 65 | 135 | 82 |
Gianfrancesco | 600 | 129 | 389 | 97 |
#Remaining studies
incomplete_smoking_status <- table_1 %>%
filter(!lead_author %in% full_smoking_status$lead_author) %>%
filter(!lead_author %in% semi_full_smoking_status$lead_author)
b <- incomplete_smoking_status %>%
select(lead_author, sample_size, current_smoker, current_former_smoker, former_smoker, never_smoker, not_stated, missing, study_id) %>%
rename('Lead author' = lead_author,
'Sample size' = sample_size,
'Current smoker' = current_smoker,
'Current/former smokers' = current_former_smoker,
'Former smoker' = former_smoker,
'Never smokers' = never_smoker,
'Not stated' = not_stated,
'Missing' = missing,
'Study ID' = study_id)
b$`Lead author` <- to_upper_camel_case(b$`Lead author`, sep_out = ", ")
b <- flextable(b) %>%
set_table_properties(width = 1, layout = 'autofit') %>%
set_caption(caption = 'Studies with incomplete smoking status')
bLead author | Sample size | Current smoker | Current/former smokers | Former smoker | Never smokers | Not stated | Missing | Study ID |
Lian | 788 | 54 | NA | NA | NA | 734 | NA | 3 |
Jin | 651 | 41 | NA | NA | NA | 610 | NA | 4 |
Chen | 548 | 24 | NA | 14 | NA | 510 | NA | 5 |
Zhou, Yu | 191 | 11 | NA | NA | NA | 180 | NA | 6 |
Mo | 155 | 6 | NA | NA | NA | 149 | NA | 7 |
Zhang, Dong | 140 | 2 | NA | 7 | NA | 131 | NA | 8 |
Wan | 135 | 9 | NA | NA | NA | 126 | NA | 9 |
Liu, Tao | 78 | NA | 5 | NA | NA | 73 | NA | 10 |
Huang, Wang | 41 | 3 | NA | NA | NA | 38 | NA | 11 |
Zhang, Cai | 645 | 41 | NA | NA | NA | 604 | NA | 12 |
Guo | 187 | 18 | NA | NA | NA | 169 | NA | 13 |
Liu, Ming | 41 | 4 | NA | NA | NA | 37 | NA | 14 |
Huang, Yang | 36 | NA | 4 | NA | NA | 32 | NA | 15 |
Xu | 53 | 6 | NA | NA | NA | 47 | NA | 16 |
Li | 17 | 3 | NA | NA | NA | 14 | NA | 17 |
Hu | 323 | NA | 38 | NA | NA | 285 | NA | 19 |
Wang, Pan | 125 | NA | 16 | NA | NA | 109 | NA | 20 |
Petrilli | 4103 | 212 | NA | 666 | NA | NA | NA | 22 |
Chow, Us, Cdc | 7162 | 96 | NA | 165 | NA | NA | 6901 | 23 |
Dong, Cao | 9 | 1 | NA | NA | NA | 8 | NA | 25 |
Kim | 28 | 5 | NA | NA | NA | 22 | 1 | 26 |
Shi, Yu | 487 | NA | 40 | NA | NA | 434 | 13 | 27 |
Yang, Yu | 52 | 2 | NA | NA | NA | 50 | NA | 28 |
Solis | 650 | 61 | NA | NA | NA | 589 | NA | 30 |
Fontanet | 661 | 69 | NA | NA | NA | NA | NA | 32 |
Zheng, Gao | 66 | 8 | NA | NA | NA | 58 | NA | 33 |
Liao, Feng | 1848 | NA | 8 | NA | NA | 140 | 1700 | 34 |
Magagnoli | 368 | NA | 52 | NA | NA | 316 | NA | 36 |
Shi, Ren | 134 | NA | 14 | NA | NA | 120 | NA | 37 |
Gold, Us, Cdc | 305 | 16 | NA | NA | NA | NA | 289 | 41 |
Yu, Cai | 95 | 8 | NA | NA | NA | 87 | NA | 44 |
De, La, Rica | 48 | NA | 10 | NA | NA | 37 | 1 | 47 |
Yin, Yang | 106 | NA | 18 | NA | NA | 88 | NA | 48 |
Shi, Zuo | 96 | NA | 29 | NA | NA | 67 | NA | 50 |
Allenbach | 152 | NA | 10 | NA | NA | 142 | NA | 52 |
Borobia | 2226 | 157 | NA | NA | NA | 2069 | NA | 55 |
Bello, Chavolla | 62489 | NA | 6209 | NA | NA | 56280 | NA | 58 |
Lubetzky | 54 | NA | 12 | NA | NA | 42 | NA | 60 |
Goyal | 393 | 20 | NA | NA | NA | 373 | NA | 61 |
Yao | 108 | 4 | NA | NA | NA | NA | 104 | 63 |
Sami | 490 | 69 | NA | NA | NA | NA | NA | 64 |
Almazeedi | 1096 | 44 | NA | NA | NA | NA | NA | 65 |
Carrillo, Vega | 10544 | 936 | NA | NA | NA | 9608 | NA | 66 |
Regina | 200 | 9 | NA | NA | NA | 191 | NA | 69 |
Targher | 339 | 28 | NA | NA | NA | 311 | NA | 72 |
Valenti | 789 | 204 | NA | NA | NA | 585 | NA | 73 |
Heng | 51 | 7 | NA | NA | NA | 44 | NA | 75 |
Shekar | 50 | 24 | NA | NA | NA | 26 | NA | 77 |
Mejia, Vilet | 329 | NA | 23 | NA | NA | 306 | NA | 78 |
Chen, Jiang | 135 | NA | 13 | NA | NA | 122 | NA | 79 |
Jiong | 1008 | 57 | NA | NA | NA | 484 | 467 | 80 |
Rimland | 11 | 1 | NA | NA | NA | 9 | NA | 81 |
Heili, Frades | 4712 | 233 | NA | 820 | NA | NA | 526 | 84 |
Vaquero, Roncero | 146 | NA | 10 | NA | NA | 136 | NA | 85 |
Kim, Garg | 2491 | 150 | NA | 642 | NA | NA | 2 | 86 |
Wu | 174 | NA | 58 | NA | NA | 116 | NA | 87 |
Hopkinson | 2401982 | NA | 263257 | NA | NA | 2138725 | NA | 88 |
Shi, Zhao | 101 | NA | 5 | NA | NA | 96 | NA | 89 |
Kimmig | 60 | NA | 22 | NA | NA | 38 | NA | 90 |
Basse | 141 | 25 | NA | NA | NA | 116 | NA | 92 |
Freites | 123 | 4 | NA | NA | NA | 119 | NA | 93 |
Alshami | 128 | 20 | NA | 3 | NA | 105 | NA | 94 |
Berumen | 102875 | NA | 9921 | NA | NA | NA | NA | 96 |
Li, Long | 145 | NA | 8 | NA | NA | 137 | NA | 98 |
Batty | 908 | 102 | NA | NA | NA | 806 | NA | 99 |
Del, Valle | 1484 | 82 | NA | 346 | NA | 680 | 376 | 101 |
Zuo, Zuo | 44 | NA | 12 | NA | NA | 32 | NA | 102 |
Chaudhry | 40 | NA | 6 | NA | NA | 33 | 1 | 103 |
Louis | 22 | NA | 10 | NA | NA | 12 | NA | 104 |
Soto, Mota | 400 | NA | 48 | NA | NA | 352 | NA | 105 |
Patel | 104 | 43 | NA | NA | NA | NA | 10 | 106 |
Garibaldi | 832 | 46 | NA | 188 | NA | 598 | NA | 107 |
Boulware | 821 | 27 | NA | NA | NA | 794 | NA | 109 |
#Smoking prevalence by country
country_prevalence_list <- table_1 %>%
group_by(country) %>%
mutate(., current_smok_percentage = current_smoker/total*100) %>%
mutate(., former_smok_percentage = former_smoker/total*100) %>%
mutate(., missing_percentage = missing/total*100) %>%
mutate(., not_stated_percentage = not_stated/total*100) %>%
mutate(never_smoker_percentage = never_smoker/total*100) %>%
group_split(country)We have split the data into a list where each country can be analysed separately if required
smoking_status <- c('current_smoker', 'former_smoker', 'current_former_smoker', 'never_smoker', 'never_smoker_unknown', 'not_stated', 'missing')
prevalence_plot <- table_1 %>%
group_by(country) %>%
rename('sample' = total) %>%
filter(current_smoker != 'NA') %>%
replace_na(., list(current_smoker = 0,
former_smoker = 0,
current_former_smoker = 0,
never_smoker = 0,
never_smoker_unknown = 0,
not_stated = 0,
missing = 0)) %>%
mutate(ever_smoker = former_smoker + current_smoker + current_former_smoker,
not_stated_missing = missing + not_stated + never_smoker_unknown) %>%
select(lead_author, country, sample, current_smoker, former_smoker, never_smoker, ever_smoker, not_stated_missing) %>%
mutate(total = never_smoker + ever_smoker + not_stated_missing) %>%
mutate(p_current_smoker = current_smoker/total,
p_ever_smoker = ever_smoker/total,
p_former_smoker = former_smoker/total,
p_never_smoker = never_smoker/total,
p_ever_smoker = ever_smoker/total,
p_not_stated_missing = not_stated_missing/total,
p_total = p_ever_smoker + p_never_smoker + p_not_stated_missing) %>%
mutate(study = 1) %>%
add_count(country)
prevalence_plot$country <- as.factor(prevalence_plot$country)
a <- tibble(country = c('china', 'usa', 'uk', 'france', 'mexico', 'spain', 'italy', 'iran', 'israel', 'korea', 'kuwait', 'switzerland'),
current_smoking_p = c(0.277, 0.138, 0.144, 0.32, 0.166, 0.276, 0.19, 0.101, 0.22, 0.193, 0.225, 0.25),
former_smoking_p = c(0.04, 0.209, 0.258, 0.314, 0, 0, 0.234, 0, 0, 0, 0, 0),
study = 0)
country_list_ordered <- sort(a$country)
b <- prevalence_plot %>%
ungroup() %>%
mutate(current_smoking_p = p_current_smoker,
former_smoking_p = p_former_smoker) %>%
add_row(country = a$country, current_smoking_p = a$current_smoking_p, former_smoking_p = a$former_smoking_p, study = a$study) %>%
group_by(country) %>%
filter(country != 'multiple') %>%
select(country, sample, study, current_smoking_p, former_smoking_p) %>%
add_count(country)
b$study <- as.factor(b$study)
c <- b %>%
pivot_longer(., c(current_smoking_p, former_smoking_p), names_to = 'smoking', values_to = 'prevalence') %>%
filter(prevalence != 0) %>%
select(-n) %>%
add_count(country)
c$country <- c$country %>%
to_upper_camel_case() %>%
recode('Usa' = 'USA', 'Uk' = 'UK', 'SaudiArabia' = 'Saudi Arabia')
d <- ggplot(c, aes(x = smoking, y = prevalence, fill = study))+
geom_dotplot(binaxis = 'y', method = 'histodot', stackdir = 'center', binpositions = 'all', dotsize = 1, stackgroups = T)+
facet_wrap(~reorder(country, -n), nrow = 2)+
labs(title = 'Smoking prevalence in included studies compared with national prevalence', y = 'Prevalence', fill = '')+
scale_fill_discrete(labels = c('National prevalence', 'Study population prevalence'))+
scale_x_discrete(name = 'Smoking status', labels = c('Current', 'Former'))+
theme_bw()+
theme(legend.position = 'bottom')
d#Updating table 1
table_1_word <- table_1 %>%
mutate(., current_percentage = current_smoker/total*100) %>%
mutate(., former_percentage = former_smoker/total*100) %>%
mutate(., current_former_percentage = current_former_smoker/total*100) %>%
mutate(., never_smoker_percentage = never_smoker/total*100) %>%
mutate(., never_smoker_unknown_percentage = never_smoker_unknown/total*100) %>%
mutate(., not_stated_percentage = not_stated/total*100) %>%
mutate(., missing_percentage = missing/total*100) %>%
select(lead_author, date_published, country, sample_size, median_age, iqr_lower, iqr_upper, mean_age, lower_range,
upper_range, standard_deviation, female_sex_percent, current_percentage, former_percentage, current_former_percentage,
never_smoker_percentage, never_smoker_unknown_percentage, not_stated_percentage, missing_percentage, study_id)
a <- data_study_general %>%
select(study_id, study_setting)
table_1_word <- left_join(table_1_word, a, by = 'study_id') %>%
select(1:4, 21, 5:20)
table_1_word$date_published <- as.Date.character(table_1_word$date_published)
write_rds(table_1_word, here::here('data_clean', 'table_1_word.rds'))
table_1_word <- table_1_word %>%
mutate(median_mean = ifelse(is.na(median_age), mean_age, median_age))
a <- table_1_word %>%
mutate(median_mean = ifelse(is.na(median_age), mean_age, median_age),
mean_used = ifelse(is.na(mean_age), '','^'),
iqr = ifelse(is.na(iqr_lower), NA, paste(iqr_lower, iqr_upper, sep = '-')),
range_combined = paste(lower_range, upper_range, sep = '-'),
range_combined = na_if(range_combined, 'NA-NA'),
st_dev = paste((as.integer(median_mean-standard_deviation)), as.integer((median_mean+standard_deviation)), sep = '-'),
st_dev = na_if(st_dev, 'NA-NA'))
a$iqr <- coalesce(a$iqr, a$range_combined, a$st_dev)
a$iqr_used <- coalesce(a$range_used, a$st_dev_used)
a <- a %>%
select(study_id, lead_author, date_published, country, sample_size, study_setting, median_mean, mean_used, iqr,
female_sex_percent, current_percentage, current_former_percentage, never_smoker_percentage,
never_smoker_unknown_percentage, not_stated_percentage, missing_percentage) %>%
mutate(median_mean = paste(median_mean, mean_used, sep = ''),
median_mean = na_if(median_mean, NA)) %>%
select(-mean_used) %>%
mutate(median_mean = ifelse(median_mean == 'NA', 'NA', paste(paste(median_mean, iqr, sep = ' ('),')', sep = ''))) %>%
select(-iqr) %>%
rename('Study ID' = study_id,
'Lead author' = lead_author,
'Date published' = date_published,
'Country' = country,
'Sample size' = sample_size,
'Study setting' = study_setting,
'Median (IQR)' = median_mean,
'Female %' = female_sex_percent,
'Current smoker %' = current_percentage,
'Current/former smokers %' = current_former_percentage,
'Never smokers %' = never_smoker_percentage,
'Never/unknown smokers %' = never_smoker_unknown_percentage,
'Not stated %' = not_stated_percentage,
'Missing %' = missing_percentage)
a$`Lead author` <- to_upper_camel_case(a$`Lead author`, sep_out = ", ")
a$`Lead author` <- a$`Lead author` %>%
recode('Chow, Us, Cdc' = 'Chow (US CDC)',
"Gold, Us, Cdc" = "Gold (US CDC)",
"Miyara, Updated" = "Miyara",
"De, La, Rica" = "de la Rica",
"Opensafely, Collaborative" = "The Opensafely Collaborative",
"Bello, Chavolla" = "Bello-Chavolla",
"Carrillo, Vega" = "Carillo-Vega",
"De, Lusignan" = "de Lusignan",
"Mejia, Vilet" = "Mejia-Vilet",
"Heili, Frades" = "Heili-Frades",
"Vaquero, Roncero" = "Vaquero-Roncero",
"Al, Hindawi" = "Al-Hindawi",
"Del, Valle" = "del Valle",
"Soto, Mota" = "Soto-Mota")
a$`Study setting` <-to_title_case(a$`Study setting`, sep_out = " ")
a$`Country` <-to_title_case(a$`Country`, sep_out = " ")
a$`Country` <- a$Country %>%
recode('Usa' = 'USA',
'Uk' = 'UK')
numeric_columns <- c('Median (IQR)', 'Female %', 'Current smoker %', 'Current/former smokers %',
'Never smokers %', 'Never/unknown smokers %', 'Not stated %', 'Missing %')
a <- flextable(a) %>%
set_caption(caption = 'Characteristics of included studies') %>%
colformat_num(col_keys = numeric_columns, digits = 2, na_str = '-', big.mark = ',') %>%
colformat_num(col_keys = 'Sample size', digits = 0, na_str = '-', big.mark = ',') %>%
set_table_properties(width = 1, layout = 'autofit')
aStudy ID | Lead author | Date published | Country | Sample size | Study setting | Median (IQR) | Female % | Current smoker % | Current/former smokers % | Never smokers % | Never/unknown smokers % | Not stated % | Missing % |
1 | Guan, Ni | 2020-02-28 | China | 1,099 | Hospital | 47 (35-58) | 41.90 | 12.47 | - | 84.35 | - | - | 1.27 |
2 | Guan, Liang | 2020-03-26 | China | 1,590 | Hospital | 49 (33-64) | 42.70 | - | 6.98 | 93.02 | - | - | - |
3 | Lian | 2020-03-25 | China | 788 | Hospital | NA | 38.50 | 6.85 | - | - | - | 93.15 | - |
4 | Jin | 2020-03-24 | China | 651 | Hospital | 46 (32-60) | 49.20 | 6.30 | - | - | - | 93.70 | - |
5 | Chen | 2020-03-26 | China | 548 | Hospital | 62 (44-70) | 37.60 | 4.38 | - | - | - | 93.07 | - |
6 | Zhou, Yu | 2020-03-11 | China | 191 | Hospital | 56 (46-67) | 38.00 | 5.76 | - | - | - | 94.24 | - |
7 | Mo | 2020-03-16 | China | 155 | Hospital | 54 (53-66) | 44.50 | 3.87 | - | - | - | 96.13 | - |
8 | Zhang, Dong | 2020-02-19 | China | 140 | Hospital | 57^ (25-87) | 46.30 | 1.43 | - | - | - | 93.57 | - |
9 | Wan | 2020-03-21 | China | 135 | Hospital | 47 (36-55) | 46.70 | 6.67 | - | - | - | 93.33 | - |
10 | Liu, Tao | 2020-02-28 | China | 78 | Hospital | 38 (33-57) | 50.00 | - | 6.41 | - | - | 93.59 | - |
11 | Huang, Wang | 2020-01-24 | China | 41 | Hospital | 49 (41-58) | 27.00 | 7.32 | - | - | - | 92.68 | - |
12 | Zhang, Cai | 2020-03-20 | China | 645 | Hospital | NA | 49.10 | 6.36 | - | - | - | 93.64 | - |
13 | Guo | 2020-03-27 | China | 187 | Hospital | 59 (45-73) | 51.30 | 9.63 | - | - | - | 90.37 | - |
14 | Liu, Ming | 2020-03-12 | China | 41 | Hospital | 39 (30-48) | 58.50 | 9.76 | - | - | - | 90.24 | - |
15 | Huang, Yang | 2020-03-05 | China | 36 | Hospital | 69 (60-78) | 30.60 | - | 11.11 | - | - | 88.89 | - |
16 | Xu | 2020-03-08 | China | 53 | Hospital | NA | 47.20 | 11.32 | - | - | - | 88.68 | - |
17 | Li | 2020-02-12 | China | 17 | Hospital | 45 (33-57) | 47.10 | 17.65 | - | - | - | 82.35 | - |
18 | Rentsch | 2020-04-14 | USA | 3,528 | Community and Hospital | 66 (60-70) | 4.60 | 27.18 | - | 36.92 | - | - | 5.30 |
19 | Hu | 2020-03-25 | China | 323 | Hospital | 61^ (23-91) | 48.60 | - | 11.76 | - | - | 88.24 | - |
20 | Wang, Pan | 2020-03-24 | China | 125 | Hospital | 41 (26-66) | 43.20 | - | 12.80 | - | - | 87.20 | - |
22 | Petrilli | 2020-04-11 | USA | 4,103 | Community and Hospital | 52 (36-65) | 47.90 | 5.17 | - | - | 78.60 | - | - |
23 | Chow (US CDC) | 2020-03-31 | USA | 7,162 | Community and Hospital | NA | - | 1.34 | - | - | - | - | 96.36 |
25 | Dong, Cao | 2020-03-20 | China | 9 | Hospital | 44 (30-46) | 66.70 | 11.11 | - | - | - | 88.89 | - |
26 | Kim | 2020-04-01 | Korea | 28 | Hospital | 43 (30-56) | 46.40 | 17.86 | - | - | - | 78.57 | 3.57 |
27 | Shi, Yu | 2020-03-18 | China | 487 | Hospital | 46 (27-65) | 46.80 | - | 8.21 | - | - | 89.12 | 2.67 |
28 | Yang, Yu | 2020-02-24 | China | 52 | Hospital | 60 (47-73) | 37.00 | 3.85 | - | - | - | 96.15 | - |
29 | Argenziano | 2020-04-22 | USA | 1,000 | Hospital | 63 (50-75) | 40.40 | 4.90 | - | 77.20 | - | - | - |
30 | Solis | 2020-04-25 | Mexico | 650 | Hospital | 46 (NA) | 42.10 | 9.38 | - | - | - | 90.62 | - |
31 | Richardson | 2020-04-22 | USA | 5,700 | Hospital | 63 (52-75) | 39.70 | - | 9.79 | 52.79 | - | - | 37.42 |
32 | Fontanet | 2020-04-23 | France | 661 | Community and Hospital | 37 (16-47) | 62.00 | 10.44 | - | - | 89.56 | - | - |
33 | Zheng, Gao | 2020-04-19 | China | 66 | Hospital | 47^ (NA) | 25.80 | 12.12 | - | - | - | 87.88 | - |
34 | Liao, Feng | 2020-04-24 | China | 1,848 | Hospital | 55 (48-61) | 54.70 | - | 0.43 | - | - | 7.58 | 91.99 |
35 | Rodriguez | 2020-04-24 | Spain | 7 | Hospital | 68 (34-75) | 28.60 | - | 42.86 | 57.14 | - | - | - |
36 | Magagnoli | 2020-04-16 | USA | 368 | Hospital | 69 (59-75) | 0.00 | - | 14.13 | - | - | 85.87 | - |
37 | Shi, Ren | 2020-04-23 | China | 134 | Hospital | 46 (34-58) | 51.50 | - | 10.45 | - | - | 89.55 | - |
38 | Hadjadj | 2020-04-23 | France | 50 | Hospital | 55 (50-63) | 22.00 | 2.00 | - | 80.00 | - | - | - |
39 | Niedzwiedz | 2020-04-30 | UK | 1,474 | Community and Hospital | NA | - | 9.98 | - | 55.04 | - | - | 0.59 |
41 | Gold (US CDC) | 2020-04-20 | USA | 305 | Hospital | NA | 50.50 | 5.25 | - | - | - | - | 94.75 |
44 | Yu, Cai | 2020-04-27 | China | 95 | Hospital | NA | 44.21 | 8.42 | - | - | - | 91.58 | - |
45 | Zheng, Xiong | 2020-04-30 | China | 73 | Hospital | 43^ (NA) | 45.20 | - | 10.96 | 89.04 | - | - | - |
46 | Miyara | 2020-05-09 | France | 479 | Community and Hospital | NA | 44.70 | 6.68 | - | 59.71 | - | - | 1.88 |
47 | de la Rica | 2020-05-11 | Spain | 48 | Hospital | 66^ (33-88) | 33.00 | - | 20.83 | - | - | 77.08 | 2.08 |
48 | Yin, Yang | 2020-05-10 | China | 106 | Hospital | 73 (61-85) | 39.60 | - | 16.98 | - | - | 83.02 | - |
49 | Gaibazzi | 2020-05-10 | Italy | 441 | Hospital | 71 (62-80) | 38.00 | 4.76 | - | 85.26 | - | - | - |
50 | Shi, Zuo | 2020-05-10 | USA | 96 | Hospital | 63^ (44-82) | 41.00 | - | 30.21 | - | - | 69.79 | - |
51 | Cho | 2020-05-11 | UK | 1,331 | Community and Hospital | NA | 49.20 | 19.01 | - | 54.02 | - | - | - |
52 | Allenbach | 2020-05-08 | France | 152 | Hospital | 77 (60-83) | 31.10 | - | 6.58 | - | - | 93.42 | - |
53 | Robilotti | 2020-05-08 | USA | 423 | Hospital | NA | 50.00 | 2.13 | - | 58.63 | - | - | 1.65 |
54 | The Opensafely Collaborative | 2020-05-07 | UK | 17,425,445 | Community and Hospital | NA | 50.10 | 17.00 | - | 45.91 | - | - | 4.16 |
55 | Borobia | 2020-05-06 | Spain | 2,226 | Hospital | 61 (46-78) | 52.00 | 7.05 | - | - | - | 92.95 | - |
56 | Giacomelli | 2020-05-06 | Italy | 233 | Hospital | 61 (50-72) | 31.90 | - | 30.04 | 69.96 | - | - | - |
57 | Shah | 2020-05-06 | USA | 316 | Hospital | 63 (43-72) | 48.10 | 16.46 | - | 42.09 | - | - | 23.73 |
58 | Bello-Chavolla | 2020-05-06 | Mexico | 62,489 | Community and Hospital | NA | 49.40 | - | 9.94 | - | - | 90.06 | - |
59 | Kolin | 2020-05-05 | UK | 1,474 | Community and Hospital | 58 (49-67) | 46.60 | 14.45 | - | 44.57 | - | - | 0.81 |
60 | Lubetzky | 2020-05-08 | USA | 54 | Hospital | 57 (29-83) | 62.00 | - | 22.22 | - | - | 77.78 | - |
61 | Goyal | 2020-04-17 | USA | 393 | Hospital | 62.2 (49-74) | 39.30 | 5.09 | - | - | - | 94.91 | - |
62 | Feng | 2020-04-10 | China | 476 | Hospital | 53 (40-64) | 43.10 | 6.51 | - | 86.13 | - | - | 4.62 |
63 | Yao | 2020-04-24 | China | 108 | Hospital | 52 (37-58) | 60.20 | 3.70 | - | - | - | - | 96.30 |
64 | Sami | 2020-05-15 | Iran | 490 | Hospital | 56.6 (41-71) | 39.00 | 14.08 | - | - | 85.92 | - | - |
65 | Almazeedi | 2020-05-15 | Kuwait | 1,096 | Hospital | 41 (25-57) | 19.00 | 4.01 | - | - | 95.99 | - | - |
66 | Carillo-Vega | 2020-05-14 | Mexico | 10,544 | Community and Hospital | 46.5^ (30-62) | 42.30 | 8.88 | - | - | - | 91.12 | - |
67 | Yanover | 2020-05-13 | Israel | 4,353 | Community and Hospital | 35 (22-54) | 44.50 | 11.81 | - | 85.23 | - | - | - |
68 | Hamer | 2020-05-13 | UK | 387,109 | Hospital | 56.2 (48-64) | 55.10 | 9.67 | - | 55.50 | - | - | - |
69 | Regina | 2020-05-14 | Switzerland | 200 | Hospital | 70 (55-81) | 40.00 | 4.50 | - | - | - | 95.50 | - |
71 | de Lusignan | 2020-05-15 | UK | 3,802 | Community | 58 (34-73) | 57.60 | 10.86 | - | 29.59 | - | - | 13.44 |
72 | Targher | 2020-05-13 | China | 339 | Hospital | 48.4^ (NA) | 52.80 | 8.26 | - | - | - | 91.74 | - |
73 | Valenti | 2020-05-18 | Italy | 789 | Community | 40.7^ (NA) | 34.98 | 25.86 | - | - | - | 74.14 | - |
74 | Feuth | 2020-05-18 | Finland | 28 | Hospital | 56 (47-72) | 46.00 | 10.71 | - | 60.71 | - | - | - |
75 | Heng | 2020-05-18 | China | 51 | Hospital | 70 (58-79) | 27.50 | 13.73 | - | - | - | 86.27 | - |
76 | Parrotta | 2020-05-18 | USA | 76 | Community and Hospital | 44.9 (13-71) | 61.80 | 2.63 | - | 68.42 | - | 2.63 | - |
77 | Shekar | 2020-05-18 | USA | 50 | Hospital | 55.5 (20-85) | 54.00 | 48.00 | - | - | - | 52.00 | - |
78 | Mejia-Vilet | 2020-05-16 | Mexico | 329 | Hospital | 49 (41-60) | 36.00 | - | 6.99 | - | - | 93.01 | - |
79 | Chen, Jiang | 2020-05-16 | China | 135 | Hospital | NA | 42.20 | - | 9.63 | - | - | 90.37 | - |
80 | Jiong | 2020-05-16 | China | 1,008 | Hospital | 55 (44-65) | 43.60 | 5.65 | - | - | - | 48.02 | 46.33 |
81 | Rimland | 2020-05-19 | USA | 11 | Hospital | 59 (48-65) | 18.20 | 9.09 | - | - | - | 81.82 | - |
82 | Palaiodimos | 2020-05-15 | USA | 200 | Hospital | 64 (50-73.5) | 51.00 | - | 32.50 | 67.50 | - | - | - |
83 | Ip | 2020-05-25 | USA | 2,512 | Hospital | 64 (52-76) | 37.62 | 3.07 | - | 64.49 | - | - | 14.61 |
84 | Heili-Frades | 2020-05-25 | Spain | 4,712 | Hospital | 62 (47-77) | 50.50 | 4.94 | - | - | 66.49 | - | 11.16 |
85 | Vaquero-Roncero | 2020-05-24 | Spain | 146 | Hospital | 66^ (59-72) | 32.20 | - | 6.85 | - | - | 93.15 | - |
86 | Kim, Garg | 2020-05-22 | USA | 2,491 | Hospital | 62 (50-75) | 46.80 | 6.02 | - | - | 68.13 | - | 0.08 |
87 | Wu | 2020-05-21 | Italy | 174 | Hospital | 61.2^ (50-71) | 30.46 | - | 33.33 | - | - | 66.67 | - |
88 | Hopkinson | 2020-05-21 | UK | 2,401,982 | Community | 43.6^ (32-55) | 63.30 | - | 10.96 | - | - | 89.04 | - |
89 | Shi, Zhao | 2020-05-20 | China | 101 | Hospital | 71 (59-80) | 40.60 | - | 4.95 | - | - | 95.05 | - |
90 | Kimmig | 2020-05-20 | USA | 60 | Hospital | 64 (50-68) | 41.67 | - | 36.67 | - | - | 63.33 | - |
91 | Al-Hindawi | 2020-05-20 | UK | 31 | Hospital | 61 (NA) | 12.90 | 3.23 | - | 25.81 | - | - | - |
92 | Basse | 2020-05-19 | France | 141 | Hospital | 62 (52-72) | 72.00 | 17.73 | - | - | - | 82.27 | - |
93 | Freites | 2020-05-19 | Spain | 123 | Hospital | 59.88^ (44-74) | 69.92 | 3.25 | - | - | - | 96.75 | - |
94 | Alshami | 2020-05-19 | Saudi Arabia | 128 | Quarantine Centre | 39.6^ (24-55) | 53.90 | 15.62 | - | - | - | 82.03 | - |
95 | Russell | 2020-05-19 | UK | 106 | Hospital | 67^ (52-81) | 45.30 | 6.60 | - | 39.62 | - | 29.25 | - |
96 | Berumen | 2020-05-26 | Mexico | 102,875 | Hospital | NA | 49.08 | - | 9.64 | - | 90.36 | - | - |
97 | Gianfrancesco | 2020-05-29 | Multiple | 600 | Community and Hospital | 56 (45-67) | 71.00 | - | 21.50 | 64.83 | - | - | 13.67 |
98 | Li, Long | 2020-05-28 | China | 145 | Not Stated | 49^ (13-80) | 61.00 | - | 5.52 | - | - | 94.48 | - |
99 | Batty | 2020-06-01 | UK | 908 | Hospital | 57.27^ (48-66) | 44.27 | 11.23 | - | - | - | 88.77 | - |
100 | Israel | 2020-06-01 | Israel | 24,087 | Community and Hospital | 43.4^ (24-62) | 48.70 | 17.08 | - | 69.88 | - | - | - |
101 | del Valle | 2020-05-30 | USA | 1,484 | Hospital | 62 (52-72) | 40.60 | 5.53 | - | - | - | 45.82 | 25.34 |
102 | Zuo, Zuo | 2020-05-29 | USA | 44 | Hospital | 57^ (45-69) | 18.18 | - | 27.27 | - | - | 72.73 | - |
103 | Chaudhry | 2020-05-29 | USA | 40 | Community and Hospital | 52 (45.5-61) | 60.00 | - | 15.00 | - | - | 82.50 | 2.50 |
104 | Louis | 2020-06-28 | USA | 22 | Hospital | 66.5^ (55-77) | 36.40 | - | 45.45 | - | - | 54.55 | - |
105 | Soto-Mota | 2020-05-27 | Mexico | 400 | Hospital | NA | 30.00 | - | 12.00 | - | - | 88.00 | - |
106 | Patel | 2020-05-26 | USA | 104 | Hospital | 60.66^ (47-74) | 47.00 | 41.35 | - | - | 49.04 | - | 9.62 |
107 | Garibaldi | 2020-05-26 | USA | 832 | Hospital | 63 (49-75) | 47.00 | 5.53 | - | - | - | 71.88 | - |
108 | Docherty | 2020-05-22 | Multiple | 20,133 | Hospital | 72.9 (58-82) | 40.00 | 4.23 | - | 44.54 | - | - | 29.55 |
109 | Boulware | 2020-03-06 | Multiple | 821 | Community | 40 (33-50) | 51.60 | 3.29 | - | - | - | 96.71 | - |
quality_rating <- table_6 %>%
select(author, 16:17) %>%
rename('lead_author' = author, 'overall_rating' = 2, 'missingness' = 3) %>%
clean_data()
#Table 2
table_2_word <- table_2 %>%
mutate(., sample = contributing_sample) %>%
mutate(., negative_test_percentage = negative_test/sample*100,
negative_current_percentage = negative_current_smoker/negative_test*100,
negative_former_smoker_percentage = negative_former_smoker/negative_test*100,
negative_current_former_smoker_percentage = negative_current_former_smoker/negative_test*100,
negative_never_smoker_percentage = negative_never_smoker/negative_test*100,
negative_not_stated_percentage = negative_not_stated/negative_test*100,
positive_test_percentage = positive_test/sample*100,
positive_current_smoker_percentage = positive_current_smoker/positive_test*100,
positive_former_smoker_percentage = positive_former_smoker/positive_test*100,
positive_current_former_smoker_percentage = positive_current_former_smoker/positive_test*100,
positive_never_smoker_percentage = positive_never_smoker/positive_test*100,
positive_not_stated_percentage = positive_not_stated/positive_test*100) %>%
select(-data_on_testing, -missing, -date_published, -sample) %>%
write_rds(here::here('data_clean', 'table_2_word.rds'))
quality_table_2 <- table_2_word %>%
left_join(., quality_rating, by = 'lead_author') %>%
select(lead_author, overall_rating, missingness) %>%
mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
select(lead_author, overall_quality)
a <- table_2_word %>%
filter(contributing_sample >= 1) %>%
mutate(Author = lead_author,
Population_tested = contributing_sample,
SARS_CoV_2_negative = paste(
paste(negative_test,
as.integer(negative_test_percentage), sep = " ("), "%)", sep = ""),
N_current_smoker = paste(paste(negative_current_smoker, as.integer(negative_current_percentage), sep = " (")
, "%)", sep = ""),
N_current_smoker = na_if(N_current_smoker, "NA (NA%)"),
N_former_smoker = paste(paste(negative_former_smoker, as.integer(negative_former_smoker_percentage), sep = " (")
, "%)", sep = ""),
N_former_smoker = na_if(N_former_smoker, "NA (NA%)"),
N_current_former_smoker = paste(paste(negative_current_former_smoker,
as.integer(negative_current_former_smoker_percentage), sep = " (")
, "%)", sep = ""),
N_current_former_smoker = na_if(N_current_former_smoker, "NA (NA%)"),
N_never_smoker = paste(paste(negative_never_smoker,
as.integer(negative_never_smoker_percentage), sep = " (")
, "%)", sep = ""),
N_never_smoker = na_if(N_never_smoker, "NA (NA%)"),
N_not_stated = paste(paste(negative_not_stated,
as.integer(negative_not_stated_percentage), sep = " (")
, "%)", sep = ""),
N_not_stated = na_if(N_not_stated, "NA (NA%)")) %>%
mutate(SARS_CoV_2_positive = paste(
paste(positive_test,
as.integer(positive_test_percentage), sep = " ("), "%)", sep = ""),
P_current_smoker = paste(paste(positive_current_smoker, as.integer(positive_current_smoker_percentage), sep = " (")
, "%)", sep = ""),
P_current_smoker = na_if(P_current_smoker, "NA (NA%)"),
P_former_smoker = paste(paste(positive_former_smoker,as.integer (positive_former_smoker_percentage), sep = " (")
, "%)", sep = ""),
P_former_smoker = na_if(P_former_smoker, "NA (NA%)"),
P_current_former_smoker = paste(paste(positive_current_former_smoker,
as.integer(positive_current_former_smoker_percentage), sep = " (")
, "%)", sep = ""),
P_current_former_smoker = na_if(P_current_former_smoker, "NA (NA%)"),
P_never_smoker = paste(paste(positive_never_smoker,
as.integer(positive_never_smoker_percentage), sep = " (")
, "%)", sep = ""),
P_never_smoker = na_if(P_never_smoker, "NA (NA%)"),
P_not_stated = paste(paste(positive_not_stated,
as.integer(positive_not_stated_percentage), sep = " (")
, "%)", sep = ""),
P_not_stated = na_if(P_not_stated, "NA (NA%)")) %>%
select(Author, Population_tested, SARS_CoV_2_negative, N_current_smoker, N_former_smoker, N_current_former_smoker,
N_never_smoker, N_not_stated, SARS_CoV_2_positive, P_current_smoker, P_former_smoker, P_current_former_smoker,
P_never_smoker, P_not_stated)
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author <- a$Author %>%
recode("Bello, Chavolla" = "Bello-Chavolla",
"De, Lusignan" = "de Lusignan",
"Del, Valle" = "del Valle")
numeric_columns <- c('Population_tested', 'SARS_CoV_2_negative', 'N_current_smoker', 'N_former_smoker',
'N_current_former_smoker', 'N_never_smoker', 'N_not_stated', 'SARS_CoV_2_positive', 'P_current_smoker',
'P_former_smoker', 'P_current_former_smoker', 'P_never_smoker', 'P_not_stated')
a <- flextable(a) %>%
set_caption(caption = 'SARS-CoV-2 infection by smoking status') %>%
colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',')
a <- set_header_labels(a,
Population_tested = 'Total population tested',
SARS_CoV_2_negative = "N (%)",
N_current_smoker = "Current smoker (%)",
N_former_smoker = "Former smoker (%)",
N_current_former_smoker = "Current/former smoker (%)",
N_never_smoker = "Never smoker (%)",
N_not_stated = "Not stated (%)",
SARS_CoV_2_positive = "N (%)",
P_current_smoker = "Current smoker (%)",
P_former_smoker = "Former smoker (%)",
P_current_former_smoker = "Current/former smoker (%)",
P_never_smoker = "Never smoker (%)",
P_not_stated = "Not stated (%)") %>%
add_header_row(top = TRUE, values = c("","SARS-CoV-2 negative", "SARS-CoV-2 positive" ), colwidths = c(2, 6, 6)) %>%
theme_booktabs() %>%
fix_border_issues() %>%
set_table_properties(width = 1, layout = 'autofit')
aSARS-CoV-2 negative | SARS-CoV-2 positive | ||||||||||||
Author | Total population tested | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Not stated (%) | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Not stated (%) |
Rentsch | 3,528 | 2974 (84%) | 1444 (48%) | 704 (23%) | - | 826 (27%) | - | 554 (15%) | 159 (28%) | 179 (32%) | - | 216 (38%) | - |
Fontanet | 661 | 490 (74%) | 64 (13%) | - | - | 426 (86%) | - | 171 (25%) | 5 (2%) | - | - | 166 (97%) | - |
Cho | 1,331 | 793 (59%) | 142 (17%) | 214 (26%) | - | 437 (55%) | - | 538 (40%) | 111 (20%) | 145 (26%) | - | 282 (52%) | - |
Shah | 243 | 212 (87%) | 52 (24%) | 47 (22%) | - | 113 (53%) | - | 29 (11%) | 0 (0%) | 9 (31%) | - | 20 (68%) | - |
Bello-Chavolla | 62,489 | 46960 (75%) | - | - | 4835 (10%) | - | 42125 (89%) | 15529 (24%) | - | - | 1374 (8%) | - | 14155 (91%) |
Kolin | 1,474 | 805 (54%) | 141 (17%) | 307 (38%) | - | 354 (43%) | 3 (0%) | 669 (45%) | 72 (10%) | 285 (42%) | - | 303 (45%) | 9 (1%) |
de Lusignan | 3,291 | 2740 (83%) | 366 (13%) | 1450 (52%) | - | 924 (33%) | - | 551 (16%) | 47 (8%) | 303 (54%) | - | 201 (36%) | - |
Valenti | 789 | 689 (87%) | 197 (28%) | - | - | - | 492 (71%) | 40 (5%) | 7 (17%) | - | - | - | 33 (82%) |
Parrotta | 76 | 39 (51%) | 1 (2%) | 10 (25%) | - | 27 (69%) | 1 (2%) | 37 (48%) | 1 (2%) | 10 (27%) | - | 25 (67%) | 1 (2%) |
Hopkinson | 26,918 | 16759 (62%) | - | - | 1552 (9%) | - | 15207 (90%) | 7123 (26%) | - | - | 527 (7%) | - | 6596 (92%) |
Berumen | 102,875 | 71353 (69%) | - | - | 7173 (10%) | 64180 (89%) | - | 31522 (30%) | - | - | 2748 (8%) | 28774 (91%) | - |
Israel | 24,087 | 20076 (83%) | 3711 (18%) | 2670 (13%) | - | 13695 (68%) | - | 4011 (16%) | 403 (10%) | 471 (11%) | - | 3137 (78%) | - |
del Valle | 1,108 | 143 (12%) | 27 (18%) | 53 (37%) | - | - | 63 (44%) | 965 (87%) | 55 (5%) | 293 (30%) | - | - | 617 (63%) |
source(here::here('scripts', 'rr_function.R'))
table_2 <- table_2_word
included_studies <- quality_table_2 %>%
filter(overall_quality == 'fair') %>%
select(lead_author)
meta <- tibble('author' = table_2$lead_author,
'negative_smoker' = table_2$negative_current_smoker,
'negative_never_smoker' = table_2$negative_never_smoker,
'positive_smoker' = table_2$positive_current_smoker,
'positive_never_smoker' = table_2$positive_never_smoker,
'negative_former_smoker' = table_2$negative_former_smoker,
'positive_former_smoker' = table_2$positive_former_smoker) %>%
filter(author %in% included_studies$lead_author)
meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
'cho' = 'Cho',
'kolin' = 'Kolin',
'de_lusignan' = 'de Lusignan',
'parrotta' = 'Parrotta',
'israel' = 'Israel')
a <- RR_testing('Rentsch', 'current')
b <- RR_testing('Rentsch', 'former')
c <- RR_testing('Cho', 'current')
d <- RR_testing('Cho', 'former')
e <- RR_testing('Kolin', 'current')
f <- RR_testing('Kolin', 'former')
g <- RR_testing('de Lusignan', 'current')
h <- RR_testing('de Lusignan', 'former')
i <- RR_testing('Parrotta', 'current')
j <- RR_testing('Parrotta', 'former')
k <- RR_testing('Israel', 'current')
l <- RR_testing('Israel', 'former')
data <- list(a,b,c,d,e,f,g,h,i,j,k,l)
k <- do.call(rbind.data.frame, data)
#SEs for Niedzwiedz et al. 2020
#current vs. never
niedz_log_RR_1<-log(1.15)
niedz_log_SE_1<-(log(1.54)-log(0.86))/3.92
k <- k %>%
add_row(., study = 'Niedzwiedz', smoking_status = 'current', log_RR = niedz_log_RR_1, log_SE = niedz_log_SE_1)
#former vs. never
niedz_log_RR_2<-log(1.42)
niedz_log_SE_2<-(log(1.69)-log(1.19))/3.92
k <- k %>%
add_row(., study = 'Niedzwiedz', smoking_status = 'former', log_RR = niedz_log_RR_2, log_SE = niedz_log_SE_2)
numbers_in_analysis <- table_2_word %>%
left_join(., quality_rating, by = 'lead_author') %>%
filter(., overall_rating != 'poor') %>%
add_row(lead_author = 'niedzwiedz', contributing_sample = 1474) %>%
replace_na(list(negative_not_stated = 0, positive_not_stated = 0)) %>%
mutate(contributing_sample = (contributing_sample - (negative_not_stated+positive_not_stated))) %>%
select(lead_author, contributing_sample) %>%
na.omit()The studies included in meta-analysis are c(“rentsch”, “niedzwiedz”, “cho”, “kolin”, “de_lusignan”, “parrotta”, “israel”).
#current vs. never smokers
current_never_meta <- k %>%
filter(smoking_status == 'current')
a<-metagen(current_never_meta$log_RR,
current_never_meta$log_SE,
sm="RR",
comb.fixed = F, comb.random = T)
png(here::here('reports', 'figure','fig_3.png'), width=1024, height=546, res=120)
forest(a,
xlim = c(0.3, 2),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2,
colgap.forest.left = unit(15,"mm"))
null <- dev.off()Current versus never smokers
#former vs. never smokers
current_never_meta <- k %>%
filter(smoking_status == 'former')
a<-metagen(current_never_meta$log_RR,
current_never_meta$log_SE,
sm="RR", comb.fixed = F, comb.random = T)
png(here::here('reports', 'figure','fig_4.png'), width=1024, height=546, res=120)
forest(a,
xlim = c(0.3, 2),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2,
colgap.forest.left = unit(15,"mm"))
null <- dev.off()Former versus never smokers
#Table 3
table_3_word <- table_3 %>%
mutate(., sample = sample_with_outcome) %>%
mutate(., community_percentage = number_community/sample*100) %>%
mutate(., community_current_smoker_percent = community_current_smoker/number_community*100) %>%
mutate(., community_former_smoker_percent = community_former_smoker/number_community*100) %>%
mutate(., community_current_former_smoker_percent = community_current_former_smoker/number_community*100) %>%
mutate(., community_never_smoker_percent = community_never_smoker/number_community*100) %>%
mutate(., community_never_unknown_smoker_percent = community_never_unknown_smoker/number_community*100) %>%
mutate(., community_not_stated_percent = community_not_stated/number_community*100) %>%
mutate(., number_hospitalised_percent = number_hospitalised/sample*100) %>%
mutate(., hospitalised_current_smoker_percent = hospitalised_current_smoker/number_hospitalised*100) %>%
mutate(., hospitalised_former_smoker_percent = hospitalised_former_smoker/number_hospitalised*100) %>%
mutate(., hospitalised_current_former_smoker_percent = hospitalised_current_former_smoker/number_hospitalised*100) %>%
mutate(., hospitalised_never_smoker_percent = hospitalised_never_smoker/number_hospitalised*100) %>%
mutate(., hospitalised_never_unknown_smoker_percent = hospitalised_never_unknown_smoker/number_hospitalised*100) %>%
mutate(., hospitalised_not_stated_percent = hospitalised_not_stated/number_hospitalised*100) %>%
select(lead_author, sample_with_outcome, number_community, community_percentage,
community_current_smoker, community_current_smoker_percent, community_former_smoker,
community_former_smoker_percent, community_current_former_smoker,
community_current_former_smoker_percent, community_never_smoker, community_never_smoker_percent,
community_never_unknown_smoker, community_never_unknown_smoker_percent,
community_not_stated, community_not_stated_percent, number_hospitalised, number_hospitalised_percent,
hospitalised_current_smoker, hospitalised_current_smoker_percent, hospitalised_former_smoker,
hospitalised_former_smoker_percent, hospitalised_current_former_smoker, hospitalised_current_former_smoker_percent,
hospitalised_never_smoker, hospitalised_never_smoker_percent, hospitalised_never_unknown_smoker,
hospitalised_never_unknown_smoker_percent, hospitalised_not_stated, hospitalised_not_stated_percent) %>%
write_rds(here::here('data_clean', 'table_3_word.rds'))
quality_table_3 <- table_3_word %>%
left_join(., quality_rating, by = 'lead_author') %>%
select(lead_author, overall_rating, missingness) %>%
mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
select(lead_author, overall_quality)
a <- table_3_word %>%
filter(number_community >= 1) %>%
mutate(Author = lead_author,
Population = sample_with_outcome,
Community = paste(
paste(number_community,
as.integer(community_percentage), sep = " ("), "%)", sep = ""),
C_current_smoker = paste(paste(community_current_smoker, as.integer(community_current_smoker_percent), sep = " (")
, "%)", sep = ""),
C_current_smoker = na_if(C_current_smoker, "NA (NA%)"),
C_former_smoker = paste(paste(community_former_smoker, as.integer(community_former_smoker_percent), sep = " (")
, "%)", sep = ""),
C_former_smoker = na_if(C_former_smoker, "NA (NA%)"),
C_current_former_smoker = paste(paste(community_current_former_smoker,
as.integer(community_current_former_smoker_percent), sep = " (")
, "%)", sep = ""),
C_current_former_smoker = na_if(C_current_former_smoker, "NA (NA%)"),
C_never_smoker = paste(paste(community_never_smoker,
as.integer(community_never_smoker_percent), sep = " (")
, "%)", sep = ""),
C_never_smoker = na_if(C_never_smoker, "NA (NA%)"),
C_never_unknown_smoker = paste(paste(community_never_unknown_smoker,
as.integer(community_never_unknown_smoker_percent), sep = " (")
, "%)", sep = ""),
C_never_unknown_smoker = na_if(C_never_unknown_smoker, "NA (NA%)"),
C_not_stated = paste(paste(community_not_stated,
as.integer(community_not_stated_percent), sep = " (")
, "%)", sep = ""),
C_not_stated = na_if(C_not_stated, "NA (NA%)")) %>%
mutate(Hospitalised = paste(
paste(number_hospitalised,
as.integer(number_hospitalised_percent), sep = " ("), "%)", sep = ""),
H_current_smoker = paste(paste(hospitalised_current_smoker, as.integer(hospitalised_current_smoker_percent), sep = " (")
, "%)", sep = ""),
H_current_smoker = na_if(H_current_smoker, "NA (NA%)"),
H_former_smoker = paste(paste(hospitalised_former_smoker, as.integer(hospitalised_former_smoker_percent), sep = " (")
, "%)", sep = ""),
H_former_smoker = na_if(H_former_smoker, "NA (NA%)"),
H_current_former_smoker = paste(paste(hospitalised_current_former_smoker,
as.integer(hospitalised_current_former_smoker_percent), sep = " (")
, "%)", sep = ""),
H_current_former_smoker = na_if(H_current_former_smoker, "NA (NA%)"),
H_never_smoker = paste(paste(hospitalised_never_smoker,
as.integer(hospitalised_never_smoker_percent), sep = " (")
, "%)", sep = ""),
H_never_smoker = na_if(H_never_smoker, "NA (NA%)"),
H_never_unknown_smoker = paste(paste(hospitalised_never_unknown_smoker,
as.integer(hospitalised_never_unknown_smoker_percent), sep = " (")
, "%)", sep = ""),
H_never_unknown_smoker = na_if(H_never_unknown_smoker, "NA (NA%)"),
H_not_stated = paste(paste(hospitalised_not_stated,
as.integer(hospitalised_not_stated_percent), sep = " (")
, "%)", sep = ""),
H_not_stated = na_if(H_not_stated, "NA (NA%)")) %>%
select(Author, Population, Community, C_current_smoker, C_former_smoker, C_current_former_smoker,
C_never_smoker,C_never_unknown_smoker,C_not_stated, Hospitalised, H_current_smoker, H_former_smoker,
H_current_former_smoker, H_never_smoker, H_never_unknown_smoker, H_not_stated)
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author <- a$Author %>%
recode("Chow, Us, Cdc" = "Chow (US CDC)",
"Miyara, Updated" = "Miyara",
"Carrillo, Vega" = "Carrillo-Vega",
"Heili, Frades" = "Heili-Frades")
numeric_columns <- 'Population'
a <- flextable(a) %>%
set_caption(caption = 'COVID-19 hospitalisation by smoking status') %>%
colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
colformat_char(na_str = '-')
a <- set_header_labels(a,
Population = 'Population with outcome',
Community = "N (%)",
C_current_smoker = "Current smoker (%)",
C_former_smoker = "Former smoker (%)",
C_current_former_smoker = "Current/former smoker (%)",
C_never_smoker = "Never smoker (%)",
C_never_unknown_smoker = "Never/unknown smoker (%)",
C_not_stated = "Not stated (%)",
Hospitalised = "N (%)",
H_current_smoker = "Current smoker (%)",
H_former_smoker = "Former smoker (%)",
H_current_former_smoker = "Current/former smoker (%)",
H_never_smoker = "Never smoker (%)",
H_never_unknown_smoker = "Never/unknown smoker (%)",
H_not_stated = "Not stated (%)") %>%
add_header_row(top = TRUE, values = c("","Community", "Hospitalised" ), colwidths = c(2, 7, 7)) %>%
theme_booktabs() %>%
fix_border_issues() %>%
set_table_properties(width = 1, layout = 'autofit')
aCommunity | Hospitalised | ||||||||||||||
Author | Population with outcome | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) |
Rentsch | 554 | 269 (48%) | 69 (25%) | 90 (33%) | - | 110 (40%) | - | - | 285 (51%) | 90 (31%) | 89 (31%) | - | 106 (37%) | - | - |
Petrilli | 4103 | 2104 (51%) | 108 (5%) | 250 (11%) | - | - | 1746 (82%) | - | 1999 (48%) | 104 (5%) | 416 (20%) | - | - | 1479 (73%) | - |
Chow (US CDC) | 6637 | 5143 (77%) | 61 (1%) | 80 (1%) | - | - | - | 5002 (97%) | 1494 (22%) | 27 (1%) | 78 (5%) | - | - | - | 1389 (92%) |
Argenziano | 1000 | 151 (15%) | 14 (9%) | 18 (11%) | - | 119 (78%) | - | - | 849 (84%) | 35 (4%) | 161 (18%) | - | 653 (76%) | - | - |
Miyara | 470 | 139 (29%) | 14 (10%) | 41 (29%) | - | 77 (55%) | - | 7 (5%) | 340 (72%) | 18 (5%) | 111 (32%) | - | 209 (61%) | - | 2 (0%) |
Lubetzky | 54 | 15 (27%) | - | - | 4 (26%) | - | - | 11 (73%) | 39 (72%) | - | - | 8 (20%) | - | - | 31 (79%) |
Carrillo-Vega | 9946 | 3922 (39%) | 408 (10%) | - | - | - | - | 3514 (89%) | 6024 (60%) | 486 (8%) | - | - | - | - | 5538 (91%) |
Yanover | 4353 | 4180 (96%) | 484 (11%) | 118 (2%) | - | 3578 (85%) | - | - | 173 (3%) | 30 (17%) | 11 (6%) | - | 132 (76%) | - | - |
Hamer | 387109 | 386349 (99%) | 37333 (9%) | 134542 (34%) | - | 214474 (55%) | - | - | 760 (0%) | 93 (12%) | 313 (41%) | - | 354 (46%) | - | - |
Heili-Frades | 4712 | 1973 (41%) | 121 (6%) | 222 (11%) | - | - | 1630 (82%) | 1630 (82%) | 2739 (58%) | 112 (4%) | 598 (21%) | - | - | 2029 (74%) | - |
Freites | 123 | 69 (56%) | 1 (1%) | - | - | - | - | 68 (98%) | 54 (43%) | 3 (5%) | - | - | - | - | 51 (94%) |
Berumen | 102875 | 18832 (18%) | - | - | 1546 (8%) | - | 17286 (91%) | - | 12690 (12%) | - | - | 1202 (9%) | - | 11488 (90%) | - |
Gianfrancesco | 600 | 323 (53%) | - | - | 61 (18%) | - | - | 262 (81%) | 277 (46%) | - | - | 68 (24%) | - | - | 209 (75%) |
Chaudhry | 40 | 19 (47%) | - | - | 0 (0%) | - | - | 19 (100%) | 21 (52%) | - | - | 6 (28%) | - | - | 15 (71%) |
The studies included in meta-analysis are c(“rentsch”, “argenziano”, “miyara_updated”, “yanover”, “hamer”).
# Data --------------------------------------------------------------------
meta <- tibble('author' = table_3$lead_author,
'community_smoker' = table_3$community_current_smoker,
'community_never_smoker' = table_3$community_never_smoker,
'hospitalised_smoker' = table_3$hospitalised_current_smoker,
'hospitalised_never_smoker' = table_3$hospitalised_never_smoker,
'community_former_smoker' = table_3$community_former_smoker,
'hospitalised_former_smoker' = table_3$hospitalised_former_smoker) %>%
filter(author %in% included_studies$lead_author)
meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
'argenziano' = 'Argenziano',
'miyara_updated' = 'Miyara',
'yanover' = 'Yanover',
'hamer' = 'Hamer',
'heili_frades' = 'Heili-Frades')
# Current smoker hospitalisation ------------------------------------------
event_rates_smoker <- meta %>%
mutate(., Ee = hospitalised_smoker) %>%
mutate(., Ne = (hospitalised_smoker+community_smoker)) %>%
mutate(., Ec = hospitalised_never_smoker) %>%
mutate(., Nc = (hospitalised_never_smoker+community_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_smoker <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_smoker,
studlab = paste(Author),
comb.fixed = F,
comb.random = T,
method.tau = 'SJ',
hakn = T,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_5.png'), width=1480, height=546, res=120)
current_smoker_hospitalisation <- forest(event_rates_smoker,
sortvar = Author,
xlim = c(0.5, 3),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Current smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Current versus never smokers
# Former smoker hospitalisation -------------------------------------------
event_rates_former <- meta %>%
mutate(., Ee = hospitalised_former_smoker) %>%
mutate(., Ne = (hospitalised_former_smoker+community_former_smoker)) %>%
mutate(., Ec = hospitalised_never_smoker) %>%
mutate(., Nc = (hospitalised_never_smoker+community_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_former <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_former,
studlab = paste(Author),
comb.fixed = F,
comb.random = T,
method.tau = 'SJ',
hakn = T,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_6.png'), width=1480, height=546, res=120)
former_smoker_hospitalisation <- forest(event_rates_former,
sortvar = Author,
xlim = c(0.5, 5),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Former smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Former versus never smokers
#Table 4
table_4_word <- table_4 %>%
mutate(., sample = sample_with_severity) %>%
mutate(., non_severe_disease_percentage = non_severe_disease/sample*100) %>%
mutate(., non_severe_current_smoker_percent = non_severe_current_smoker/non_severe_disease*100) %>%
mutate(., non_severe_former_smoker_percent = non_severe_former_smoker/non_severe_disease*100) %>%
mutate(., non_severe_current_former_smoker_percent = non_severe_current_former_smoker/non_severe_disease*100) %>%
mutate(., non_severe_never_smoker_percent = non_severe_never_smoker/non_severe_disease*100) %>%
mutate(., non_severe_never_unknown_smoker_percent = non_severe_never_unknown_smoker/non_severe_disease*100) %>%
mutate(., non_severe_not_stated_percent = non_severe_not_stated/non_severe_disease*100) %>%
mutate(., severe_disease_number_percent = severe_disease_number/sample*100) %>%
mutate(., severe_disease_current_smoker_percent = severe_disease_current_smoker/severe_disease_number*100) %>%
mutate(., severe_disease_former_smoker_percent = severe_disease_former_smoker/severe_disease_number*100) %>%
mutate(., severe_disease_current_former_smoker_percent = severe_disease_current_former_smoker/severe_disease_number*100) %>%
mutate(., severe_disease_never_smoker_percent = severe_disease_never_smoker/severe_disease_number*100) %>%
mutate(., severe_disease_never_unknown_percent = severe_disease_never_unknown/severe_disease_number*100) %>%
mutate(., severe_disease_not_stated_percent = severe_disease_not_stated/severe_disease_number*100) %>%
select(lead_author, sample, non_severe_disease, non_severe_disease_percentage, non_severe_current_smoker,
non_severe_current_smoker_percent, non_severe_former_smoker, non_severe_former_smoker_percent,
non_severe_current_former_smoker, non_severe_current_former_smoker_percent, non_severe_never_smoker,
non_severe_never_smoker_percent, non_severe_never_unknown_smoker, non_severe_never_unknown_smoker_percent,
non_severe_not_stated, non_severe_not_stated_percent, severe_disease_number, severe_disease_number_percent,
severe_disease_current_smoker, severe_disease_current_smoker_percent,
severe_disease_former_smoker, severe_disease_former_smoker_percent, severe_disease_current_former_smoker,
severe_disease_current_former_smoker_percent, severe_disease_never_smoker, severe_disease_never_smoker_percent,
severe_disease_never_unknown, severe_disease_never_unknown_percent, severe_disease_not_stated,
severe_disease_not_stated_percent) %>%
write_rds(here::here('data_clean', 'table_4_word.rds'))
quality_table_4 <- table_4_word %>%
left_join(., quality_rating, by = 'lead_author') %>%
select(lead_author, overall_rating, missingness) %>%
mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
select(lead_author, overall_quality)
a <- table_4_word %>%
filter(non_severe_disease >= 1) %>%
mutate(Author = lead_author,
Population = sample,
non_severe_disease = paste(
paste(non_severe_disease,
as.integer(non_severe_disease_percentage), sep = " ("), "%)", sep = ""),
ns_current_smoker = paste(paste(non_severe_current_smoker, as.integer(non_severe_current_smoker_percent), sep = " (")
, "%)", sep = ""),
ns_current_smoker = na_if(ns_current_smoker, "NA (NA%)"),
ns_former_smoker = paste(paste(non_severe_former_smoker, as.integer(non_severe_former_smoker_percent), sep = " (")
, "%)", sep = ""),
ns_former_smoker = na_if(ns_former_smoker, "NA (NA%)"),
ns_current_former_smoker = paste(paste(non_severe_current_former_smoker,
as.integer(non_severe_current_former_smoker_percent), sep = " (")
, "%)", sep = ""),
ns_current_former_smoker = na_if(ns_current_former_smoker, "NA (NA%)"),
ns_never_smoker = paste(paste(non_severe_never_smoker,
as.integer(non_severe_never_smoker_percent), sep = " (")
, "%)", sep = ""),
ns_never_smoker = na_if(ns_never_smoker, "NA (NA%)"),
ns_never_unknown_smoker = paste(paste(non_severe_never_unknown_smoker,
as.integer(non_severe_never_unknown_smoker_percent), sep = " (")
, "%)", sep = ""),
ns_never_unknown_smoker = na_if(ns_never_unknown_smoker, "NA (NA%)"),
ns_not_stated = paste(paste(non_severe_not_stated,
as.integer(non_severe_not_stated_percent), sep = " (")
, "%)", sep = ""),
ns_not_stated = na_if(ns_not_stated, "NA (NA%)"),
) %>%
mutate(severe_disease = paste(
paste(severe_disease_number,
as.integer(severe_disease_number_percent), sep = " ("), "%)", sep = ""),
s_current_smoker = paste(paste(severe_disease_current_smoker, as.integer(severe_disease_current_smoker_percent), sep = " (")
, "%)", sep = ""),
s_current_smoker = na_if(s_current_smoker, "NA (NA%)"),
s_former_smoker = paste(paste(severe_disease_former_smoker, as.integer(severe_disease_former_smoker_percent), sep = " (")
, "%)", sep = ""),
s_former_smoker = na_if(s_former_smoker, "NA (NA%)"),
s_current_former_smoker = paste(paste(severe_disease_current_former_smoker,
as.integer(severe_disease_current_former_smoker_percent), sep = " (")
, "%)", sep = ""),
s_current_former_smoker = na_if(s_current_former_smoker, "NA (NA%)"),
s_never_smoker = paste(paste(severe_disease_never_smoker,
as.integer(severe_disease_never_smoker_percent), sep = " (")
, "%)", sep = ""),
s_never_smoker = na_if(s_never_smoker, "NA (NA%)"),
s_never_unknown_smoker = paste(paste(severe_disease_never_unknown,
as.integer(severe_disease_never_unknown_percent), sep = " (")
, "%)", sep = ""),
s_never_unknown_smoker = na_if(s_never_unknown_smoker, "NA (NA%)"),
s_not_stated = paste(paste(severe_disease_not_stated,
as.integer(severe_disease_not_stated_percent), sep = " (")
, "%)", sep = ""),
s_not_stated = na_if(s_not_stated, "NA (NA%)")) %>%
select(Author, Population, non_severe_disease, ns_current_smoker, ns_former_smoker,
ns_current_former_smoker, ns_never_smoker, ns_never_unknown_smoker, ns_not_stated,
severe_disease, s_current_smoker, s_former_smoker, s_current_former_smoker, s_never_smoker, s_never_unknown_smoker,
s_not_stated)
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author <- a$Author %>%
recode("De, La, Rica" = "de la Rica",
"Mejia, Vilet" = "Mejia-Vilet",
"Vaquero, Roncero" = "Vaquero-Roncero")
numeric_columns <- 'Population'
a <- flextable(a) %>%
set_caption(caption = 'COVID-19 severity by smoking status') %>%
colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
colformat_char(na_str = '-')
a <- set_header_labels(a,
Population = "Population with severity",
non_severe_disease = "N (%)",
ns_current_smoker = "Current smoker (%)",
ns_former_smoker = "Former smoker (%)",
ns_current_former_smoker = "Current/former smoker (%)",
ns_never_unknown_smoker = "Never/unknown smoker (%)",
ns_never_smoker = "Never smoker (%)",
ns_not_stated = "Not stated (%)",
severe_disease = "N (%)",
s_current_smoker = "Current smoker (%)",
s_former_smoker = "Former smoker (%)",
s_current_former_smoker = "Current/former smoker (%)",
s_never_unknown_smoker = "Never/unknown smoker (%)",
s_never_smoker = "Never smoker (%)",
s_not_stated = "Not stated (%)") %>%
add_header_row(top = TRUE, values = c("","Non severe disease", "Severe disease" ), colwidths = c(2, 7, 7)) %>%
theme_booktabs() %>%
fix_border_issues() %>%
set_table_properties(width = 1, layout = 'autofit')
aNon severe disease | Severe disease | ||||||||||||||
Author | Population with severity | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) |
Guan, Ni | 1085 | 913 (84%) | 108 (11%) | 12 (1%) | - | 793 (86%) | - | - | 172 (15%) | 29 (16%) | 9 (5%) | - | 134 (77%) | - | - |
Zhang, Dong | 9 | 3 (33%) | 0 (0%) | 3 (100%) | - | 0 (0%) | - | - | 6 (66%) | 2 (33%) | 4 (66%) | - | 0 (0%) | - | - |
Wan | 9 | 8 (88%) | 8 (100%) | 0 (0%) | - | 0 (0%) | - | - | 1 (11%) | 1 (100%) | 0 (0%) | - | 0 (0%) | - | - |
Huang, Wang | 3 | 3 (100%) | 3 (100%) | 0 (0%) | - | 0 (0%) | - | - | 0 (0%) | 0 (NA%) | 0 (NA%) | - | 0 (NA%) | - | - |
Rentsch | 285 | 168 (58%) | 47 (27%) | 53 (31%) | - | 68 (40%) | - | - | 117 (41%) | 43 (36%) | 36 (30%) | - | 38 (32%) | - | - |
Hu | 323 | 151 (46%) | - | - | 12 (7%) | - | 139 (92%) | - | 172 (53%) | - | - | 26 (15%) | - | 146 (84%) | - |
Wang, Pan | 125 | 100 (80%) | - | - | 9 (9%) | - | 91 (91%) | - | 25 (20%) | - | - | 7 (28%) | - | 18 (72%) | - |
Petrilli | 1278 | 932 (72%) | 62 (6%) | 175 (18%) | - | - | 391 (41%) | - | 650 (50%) | 28 (4%) | 145 (22%) | - | - | 477 (73%) | - |
Kim | 27 | 21 (77%) | 3 (14%) | - | - | - | 18 (85%) | - | 6 (22%) | 2 (33%) | 0 (0%) | - | - | 4 (66%) | - |
Shi, Yu | 474 | 425 (89%) | - | - | 34 (8%) | - | 391 (92%) | - | 49 (10%) | - | - | 6 (12%) | - | 43 (87%) | - |
Liao, Feng | 148 | 92 (62%) | - | - | 5 (5%) | - | - | 87 (94%) | 56 (37%) | 3 (5%) | - | - | - | - | 53 (94%) |
Shi, Ren | 134 | 88 (65%) | - | - | 8 (9%) | - | - | 80 (90%) | 46 (34%) | - | - | 6 (13%) | - | - | 40 (86%) |
Hadjadj | 50 | 15 (30%) | 1 (6%) | 2 (13%) | - | 12 (80%) | - | - | 35 (70%) | 0 (0%) | 7 (20%) | - | 28 (80%) | - | - |
Zheng, Xiong | 73 | 43 (58%) | - | - | 6 (13%) | 37 (86%) | - | - | 30 (41%) | - | - | 2 (6%) | 28 (93%) | - | - |
de la Rica | 48 | 26 (54%) | - | - | 6 (23%) | - | - | 20 (76%) | 20 (41%) | - | - | 4 (20%) | - | - | 16 (80%) |
Yin, Yang | 106 | 47 (44%) | - | - | 6 (12%) | - | - | 41 (87%) | 59 (55%) | - | - | 12 (20%) | - | - | 47 (79%) |
Allenbach | 147 | 100 (68%) | - | - | 9 (9%) | - | - | 91 (91%) | 47 (31%) | - | - | 0 (0%) | - | - | 47 (100%) |
Goyal | 393 | 263 (66%) | 14 (5%) | - | - | - | - | 249 (94%) | 130 (33%) | 6 (4%) | - | - | - | - | 124 (95%) |
Feng | 471 | 352 (74%) | 27 (7%) | - | - | - | - | 325 (92%) | 124 (26%) | 17 (13%) | - | - | - | - | 107 (86%) |
Yao | 108 | 83 (76%) | 1 (1%) | - | - | - | - | 82 (98%) | 25 (23%) | 3 (12%) | - | - | - | - | 22 (88%) |
Sami | 490 | 400 (81%) | 53 (13%) | - | - | - | - | 347 (86%) | 90 (18%) | 16 (17%) | - | - | - | - | 74 (82%) |
Regina | 200 | 163 (81%) | 9 (5%) | - | - | - | - | 154 (94%) | 37 (18%) | 0 (0%) | - | - | - | - | 37 (100%) |
Feuth | 28 | 21 (75%) | 1 (4%) | 7 (33%) | - | 13 (61%) | - | - | 7 (25%) | 2 (28%) | 1 (14%) | - | 4 (57%) | - | - |
Mejia-Vilet | 329 | 214 (65%) | - | - | 13 (6%) | - | - | 201 (93%) | 115 (34%) | - | - | 10 (8%) | - | - | 105 (91%) |
Chen, Jiang | 135 | 54 (40%) | - | - | 4 (7%) | - | - | 50 (92%) | 81 (60%) | - | - | 9 (11%) | - | - | 72 (88%) |
Vaquero-Roncero | 146 | 75 (51%) | - | - | 4 (5%) | - | - | 71 (94%) | 71 (48%) | - | - | 6 (8%) | - | - | 65 (91%) |
Kim, Garg | 2490 | 1692 (67%) | 112 (6%) | 395 (23%) | - | - | 1185 (70%) | - | 798 (32%) | 38 (4%) | 247 (30%) | - | - | 512 (64%) | - |
Wu | 174 | 92 (52%) | - | - | 47 (51%) | - | 45 (48%) | - | 82 (47%) | 11 (13%) | - | - | - | 71 (86%) | - |
Russell | 106 | 87 (82%) | 6 (6%) | 22 (25%) | - | 35 (40%) | - | 24 (27%) | 19 (17%) | 1 (5%) | 4 (21%) | - | 7 (36%) | - | 7 (36%) |
Chaudhry | 40 | 34 (85%) | - | - | 5 (14%) | - | - | 29 (85%) | 6 (15%) | - | - | 1 (16%) | - | - | 5 (83%) |
Patel | 104 | 67 (64%) | 25 (37%) | - | - | - | 36 (53%) | 6 (8%) | 37 (35%) | 18 (48%) | - | - | - | 15 (40%) | 4 (10%) |
Garibaldi | 832 | 532 (63%) | 25 (4%) | 107 (20%) | - | - | - | 400 (75%) | 300 (36%) | 21 (7%) | 81 (27%) | - | - | - | 198 (66%) |
The studies included in meta-analysis are c(“guan_ni”, “rentsch”, “hadjadj”, “feuth”).
# Data --------------------------------------------------------------------
meta <- tibble('author' = table_4$lead_author,
'non_severe_smoker' = table_4$non_severe_current_smoker,
'non_severe_never_smoker' = table_4$non_severe_never_smoker,
'severe_smoker' = table_4$severe_disease_current_smoker,
'severe_never_smoker' = table_4$severe_disease_never_smoker,
'non_severe_former_smoker' = table_4$non_severe_former_smoker,
'severe_former_smoker' = table_4$severe_disease_former_smoker) %>%
filter(author %in% included_studies$lead_author)
meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
'guan_ni' = 'Guan, Ni',
'hadjadj' = 'Hadjadj',
"feuth" = "Feuth")
# Current smoker severity ------------------------------------------
event_rates_smoker <- meta %>%
mutate(., Ee = severe_smoker) %>%
mutate(., Ne = (severe_smoker+non_severe_smoker)) %>%
mutate(., Ec = severe_never_smoker) %>%
mutate(., Nc = (severe_never_smoker+non_severe_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_smoker <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_smoker,
studlab = paste(Author),
comb.fixed = T,
comb.random = F,
method.tau = 'SJ',
hakn = F,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_7.png'), width=1024, height=546, res=120)
current_smoker_severity <- forest(event_rates_smoker,
sortvar = Author,
xlim = c(0.1, 5),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Current smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Current versus never smokers
# Former smoker hospitalisation -------------------------------------------
event_rates_former <- meta %>%
mutate(., Ee = severe_former_smoker) %>%
mutate(., Ne = (severe_former_smoker+non_severe_former_smoker)) %>%
mutate(., Ec = severe_never_smoker) %>%
mutate(., Nc = (severe_never_smoker+non_severe_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_former <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_former,
studlab = paste(Author),
comb.fixed = F,
comb.random = T,
method.tau = 'SJ',
hakn = F,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_8.png'), width=1024, height=546, res=120)
former_smoker_severity <- forest(event_rates_former,
sortvar = Author,
xlim = c(0.2, 10),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Former smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Former versus never smokers
#Table 5
table_5_word <- table_5 %>%
mutate(., sample = sample_with_deaths) %>%
mutate(., deaths_percentage = deaths/sample*100) %>%
mutate(., death_current_smokers_percent = death_current_smokers/deaths*100) %>%
mutate(., death_former_smokers_percent = death_former_smokers/deaths*100) %>%
mutate(., death_current_former_smokers_percent = death_current_former_smokers/deaths*100) %>%
mutate(., death_never_smokers_percent = death_never_smokers/deaths*100) %>%
mutate(., death_never_unknown_smokers_percent = death_never_unknown_smokers/deaths*100) %>%
mutate(., death_not_stated_percent = death_not_stated/deaths*100) %>%
mutate(., recovered_percentage = recovered/sample*100) %>%
mutate(., recovered_current_smokers_percent = recovered_current_smoking/recovered*100) %>%
mutate(., recovered_former_smokers_percent = recovered_former_smoker/recovered*100) %>%
mutate(., recovered_current_former_smokers_percent = recovered_current_former_smokers/recovered*100) %>%
mutate(., recovered_never_smokers_percent = recovered_never_smoker/recovered*100) %>%
mutate(., recovered_never_unknown_smokers_percent = recovered_never_unknown_smoker/recovered*100) %>%
mutate(., recovered_not_stated_percent = recovered_not_stated/recovered*100) %>%
select(lead_author, sample, recovered, recovered_percentage, recovered_current_smoking, recovered_current_smokers_percent,
recovered_former_smoker, recovered_former_smokers_percent, recovered_current_former_smokers,
recovered_current_former_smokers_percent, recovered_never_smoker, recovered_never_smokers_percent,
recovered_never_unknown_smoker, recovered_never_unknown_smokers_percent, recovered_not_stated,
recovered_not_stated_percent,
deaths, deaths_percentage, death_current_smokers, death_current_smokers_percent,
death_former_smokers, death_former_smokers_percent, death_current_former_smokers,
death_current_former_smokers_percent, death_never_smokers, death_never_smokers_percent,
death_never_unknown_smokers, death_never_unknown_smokers_percent, death_not_stated, death_not_stated_percent) %>%
write_rds(here::here('data_clean', 'table_5_word.rds'))
quality_table_5 <- table_5_word %>%
left_join(., quality_rating, by = 'lead_author') %>%
select(lead_author, overall_rating, missingness) %>%
mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
select(lead_author, overall_quality)
a <- table_5_word %>%
filter(recovered >= 1) %>%
mutate(Author = lead_author,
Population = sample,
recovered = paste(
paste(recovered,
as.integer(recovered_percentage), sep = " ("), "%)", sep = ""),
recovered_current_smoker = paste(paste(recovered_current_smoking,
as.integer(recovered_current_smokers_percent), sep = " (")
, "%)", sep = ""),
recovered_current_smoker = na_if(recovered_current_smoker, "NA (NA%)"),
recovered_former_smoker = paste(paste(recovered_former_smoker,
as.integer(recovered_former_smokers_percent), sep = " (")
, "%)", sep = ""),
recovered_former_smoker = na_if(recovered_former_smoker, "NA (NA%)"),
recovered_current_former_smoker = paste(paste(recovered_current_former_smokers,
as.integer(recovered_current_former_smokers_percent), sep = " (")
, "%)", sep = ""),
recovered_current_former_smoker = na_if(recovered_current_former_smoker, "NA (NA%)"),
recovered_never_smoker = paste(paste(recovered_never_smoker,
as.integer(recovered_never_smokers_percent), sep = " (")
, "%)", sep = ""),
recovered_never_smoker = na_if(recovered_never_smoker, "NA (NA%)"),
recovered_never_unknown_smoker = paste(paste(recovered_never_unknown_smoker,
as.integer(recovered_never_unknown_smokers_percent), sep = " (")
, "%)", sep = ""),
recovered_never_unknown_smoker = na_if(recovered_never_unknown_smoker, "NA (NA%)"),
recovered_not_stated = paste(paste(recovered_not_stated,
as.integer(recovered_not_stated_percent), sep = " (")
, "%)", sep = ""),
recovered_not_stated = na_if(recovered_not_stated, "NA (NA%)")) %>%
mutate(deaths = paste(
paste(deaths,
as.integer(deaths_percentage), sep = " ("), "%)", sep = ""),
death_current_smoker = paste(paste(death_current_smokers,
as.integer(death_current_smokers_percent), sep = " (")
, "%)", sep = ""),
death_current_smoker = na_if(death_current_smoker, "NA (NA%)"),
death_former_smoker = paste(paste(death_former_smokers,
as.integer(death_former_smokers_percent), sep = " (")
, "%)", sep = ""),
death_former_smoker = na_if(death_former_smoker, "NA (NA%)"),
death_current_former_smoker = paste(paste(death_current_former_smokers,
as.integer(death_current_former_smokers_percent), sep = " (")
, "%)", sep = ""),
death_current_former_smoker = na_if(death_current_former_smoker, "NA (NA%)"),
death_never_smoker = paste(paste(death_never_smokers,
as.integer(death_never_smokers_percent), sep = " (")
, "%)", sep = ""),
death_never_smoker = na_if(death_never_smoker, "NA (NA%)"),
death_never_unknown_smoker = paste(paste(death_never_unknown_smokers,
as.integer(death_never_unknown_smokers_percent), sep = " (")
, "%)", sep = ""),
death_never_unknown_smoker = na_if(death_never_unknown_smoker, "NA (NA%)"),
death_not_stated = paste(paste(death_not_stated,
as.integer(death_not_stated_percent), sep = " (")
, "%)", sep = ""),
death_not_stated = na_if(death_not_stated, "NA (NA%)")) %>%
select(Author, Population, recovered, recovered_current_smoker, recovered_former_smoker, recovered_current_former_smoker,
recovered_never_smoker, recovered_never_unknown_smoker, recovered_not_stated, deaths, death_current_smoker,
death_former_smoker, death_current_former_smoker, death_never_smoker, death_never_unknown_smoker,
death_not_stated)
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author <- a$Author %>%
recode("Carrillo, Vega" = "Carillo-Vega",
"Heili, Frades" = "Heili-Frades",
"Al, Hindawi" = "Al-Hindawi",
"Soto, Mota" = "Soto-Mota")
numeric_columns <- 'Population'
a <- flextable(a) %>%
set_caption(caption = 'COVID-19 mortality by smoking status') %>%
colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
colformat_char(na_str = '-')
a <- set_header_labels(a,
Population = "Population with mortality",
recovered = "N (%)",
recovered_current_smoker = "Current smoker (%)",
recovered_former_smoker = "Former smoker (%)",
recovered_current_former_smoker = "Current/former smoker (%)",
recovered_never_unknown_smoker = "Never/unknown smoker (%)",
recovered_never_smoker = "Never smoker (%)",
recovered_not_stated = "Not stated (%)",
deaths = "N (%)",
death_current_smoker = "Current smoker (%)",
death_former_smoker = "Former smoker (%)",
death_current_former_smoker = "Current/former smoker (%)",
death_never_unknown_smoker = "Never/unknown smoker (%)",
death_never_smoker = "Never smoker (%)",
death_not_stated = "Not stated (%)") %>%
add_header_row(top = TRUE, values = c("","Recovered", "Died" ), colwidths = c(2, 7, 7)) %>%
theme_booktabs() %>%
fix_border_issues() %>%
set_table_properties(width = 1, layout = 'autofit')
aRecovered | Died | ||||||||||||||
Author | Population with mortality | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) | N (%) | Current smoker (%) | Former smoker (%) | Current/former smoker (%) | Never smoker (%) | Never/unknown smoker (%) | Not stated (%) |
Chen | 274 | 161 (58%) | 5 (3%) | 5 (3%) | - | - | - | 151 (93%) | 113 (41%) | 7 (6%) | 2 (1%) | - | - | - | 104 (92%) |
Zhou, Yu | 191 | 137 (71%) | 6 (4%) | - | - | - | - | 131 (95%) | 54 (28%) | 5 (9%) | - | - | - | - | 49 (90%) |
Yang, Yu | 52 | 20 (38%) | 2 (10%) | - | - | - | 18 (90%) | - | 32 (61%) | - | - | - | - | 32 (100%) | - |
Gaibazzi | 441 | 285 (64%) | 11 (3%) | 30 (10%) | - | 244 (85%) | - | - | 156 (35%) | 10 (6%) | 14 (8%) | - | 132 (84%) | - | - |
Borobia | 2226 | 1766 (79%) | 113 (6%) | - | - | - | - | 1653 (93%) | 460 (20%) | 44 (9%) | - | - | - | - | 416 (90%) |
Giacomelli | 233 | 185 (79%) | - | - | 53 (28%) | 132 (71%) | - | - | 48 (20%) | - | - | 17 (35%) | 31 (64%) | - | 0 (0%) |
Yao | 108 | 96 (88%) | 1 (1%) | - | - | - | - | 95 (98%) | 12 (11%) | 3 (25%) | - | - | - | - | 9 (75%) |
Carillo-Vega | 9946 | 8983 (90%) | 795 (8%) | - | - | - | - | 8188 (91%) | 963 (9%) | 99 (10%) | - | - | - | - | 864 (89%) |
Heng | 51 | 39 (76%) | 6 (15%) | - | - | - | - | 33 (84%) | 12 (23%) | 1 (8%) | - | - | - | - | 11 (91%) |
Heili-Frades | 4712 | 4086 (86%) | 210 (5%) | 659 (16%) | - | - | 3217 (78%) | - | 626 (13%) | 23 (3%) | 161 (25%) | - | - | 442 (70%) | - |
Kim, Garg | 2490 | 2070 (83%) | 128 (6%) | 481 (23%) | - | - | 1461 (70%) | - | 420 (16%) | 22 (5%) | 161 (38%) | - | - | 236 (56%) | - |
Al-Hindawi | 31 | 15 (48%) | 0 (0%) | 10 (66%) | - | 5 (33%) | - | - | 16 (51%) | 1 (6%) | 12 (75%) | - | 3 (18%) | - | - |
Louis | 22 | 16 (72%) | - | - | 7 (43%) | - | - | 9 (56%) | 6 (27%) | - | - | 3 (50%) | - | - | 3 (50%) |
Soto-Mota | 400 | 200 (50%) | - | - | 23 (11%) | - | - | 177 (88%) | 200 (50%) | - | - | 25 (12%) | - | - | 175 (87%) |
Garibaldi | 747 | 634 (84%) | 36 (5%) | 129 (20%) | - | - | - | 469 (73%) | 113 (15%) | 6 (5%) | 36 (31%) | - | - | - | 71 (62%) |
Docherty | 13364 | 8199 (61%) | 370 (4%) | 1832 (22%) | - | 4179 (50%) | - | 1818 (22%) | 5165 (38%) | 214 (4%) | 1350 (26%) | - | 2105 (40%) | - | 1496 (28%) |
The studies included in meta-analysis are c(“gaibazzi”, “al_hindawi”).
# Data --------------------------------------------------------------------
meta <- tibble('author' = table_5$lead_author,
'recovered_current_smoker' = table_5$recovered_current_smoking,
'recovered_never_smoker' = table_5$recovered_never_smoker,
'death_current_smoker' = table_5$death_current_smokers,
'death_never_smoker' = table_5$death_never_smokers,
'recovered_former_smoker' = table_5$recovered_former_smoker,
'death_former_smoker' = table_5$death_former_smokers) %>%
filter(author %in% included_studies$lead_author)
meta$author <- recode(meta$author, 'gaibazzi' = 'Gaibazzi',
'al_hindawi' = 'Al-Hindawi')
# Current smoker mortality ------------------------------------------
event_rates_smoker <- meta %>%
mutate(., Ee = death_current_smoker) %>%
mutate(., Ne = (death_current_smoker+recovered_current_smoker)) %>%
mutate(., Ec = death_never_smoker) %>%
mutate(., Nc = (death_never_smoker+recovered_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_smoker <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_smoker,
studlab = paste(Author),
comb.fixed = T,
comb.random = F,
method.tau = 'SJ',
hakn = F,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_9.png'), width=1024, height=546, res=120)
current_smoker_mortality <- forest(event_rates_smoker,
sortvar = Author,
xlim = c(0.1, 5),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Current smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Current versus never smokers
# Former smoker mortality ------------------------------------------
event_rates_former <- meta %>%
mutate(., Ee = death_former_smoker) %>%
mutate(., Ne = (death_former_smoker+recovered_former_smoker)) %>%
mutate(., Ec = death_never_smoker) %>%
mutate(., Nc = (death_never_smoker+recovered_never_smoker)) %>%
rename('Author' = author) %>%
select(Author, Ee, Ne, Ec, Nc)
event_rates_former <- metabin(Ee,
Ne,
Ec,
Nc,
data = event_rates_former,
studlab = paste(Author),
comb.fixed = T,
comb.random = F,
method.tau = 'SJ',
hakn = F,
prediction = F,
incr = 0.1,
sm = 'RR')
png(here::here('reports', 'figure', 'fig_10.png'), width=1024, height=546, res=120)
former_smoker_mortality <- forest(event_rates_former,
sortvar = Author,
xlim = c(0.1, 5),
rightlabs = c('RR', '95% CI', 'Weight'),
leftlabs = c('Author', 'logRR', 'SE'),
lab.e = 'Former smoker',
lab.c = 'Never smoker',
print.tau2 = F,
col.diamond = 'blue',
col.diamond.lines = 'black',
col.square = 'black',
col.square.lines = 'black',
digits.sd = 2)
null <- dev.off()Former versus never smokers
#Table 6
table_6_word <- table_6 %>%
write_rds(here::here('data_clean', 'table_6_word.rds'))
kable(table_6_word, caption = 'Table 6', "html", col.names = NULL) %>%
kable_styling() %>%
scroll_box(width = "1200px", height = "400px")| guan_ni | Yes | No | No | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 1.2738854 |
| guan_liang | Yes | No | No | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 0.0000000 |
| lian | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | No | No | Not applicable | No | Poor | 93.1472081 |
| jin | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.7019969 |
| chen | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.0656934 |
| zhou_yu | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 94.2408377 |
| mo | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 96.1290323 |
| zhang_dong | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.5714286 |
| wan | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.3333333 |
| liu_tao | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.5897436 |
| huang_wang | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 92.6829268 |
| zhang_cai | Yes | No | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.6434109 |
| guo | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 90.3743316 |
| liu_ming | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 90.2439024 |
| huang_yang | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 88.8888889 |
| xu | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 88.6792453 |
| li | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 82.3529412 |
| rentsch | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 5.2991453 |
| hu | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Fair | 88.2352941 |
| wang_pan | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 87.2000000 |
| chow_us_cdc | Yes | Yes | No | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | No | No | Not applicable | No | Poor | 96.3557665 |
| petrilli | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 0.0000000 |
| dong_cao | No | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 88.8888889 |
| kim | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 82.1428571 |
| shi_yu | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 91.7864476 |
| yang_yu | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 96.1538462 |
| argenziano | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.0000000 |
| solis | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 90.6153846 |
| richardson | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 37.4210526 |
| fontanet | Yes | Yes | Yes | Yes | No | No | Cannot determine | No | No | No | Yes | No | Not applicable | No | Poor | 0.0000000 |
| zheng_gao | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 87.8787879 |
| liao_feng | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 99.5670996 |
| rodriguez | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Yes | No | Poor | 0.0000000 |
| magagnoli | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 85.8695652 |
| shi_ren | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 89.5522388 |
| hadjadj | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.0000000 |
| niedzwiedz | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 0.5917450 |
| gold_us_cdc | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 94.7540984 |
| yu_cai | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 91.5789474 |
| zheng_xiong | Yes | No | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 0.0000000 |
| miyara_updated | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 1.8789144 |
| de_la_rica | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 79.1666667 |
| yin_yang | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 83.0188679 |
| gaibazzi | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 0.0000000 |
| shi_zuo | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 69.7916667 |
| cho | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 0.0000000 |
| allenbach | Yes | Yes | Cannot determine | Yes | No | No | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.4210526 |
| robilotti | Yes | No | Yes | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 1.6548463 |
| opensafely_collaborative | Yes | No | Yes | Cannot determine | No | Cannot determine | Cannot determine | Yes | No | Cannot determine | Yes | Yes | Not applicable | Yes | Fair | 4.1624360 |
| borobia | Yes | Yes | Yes | Cannot determine | No | No | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 92.9469901 |
| giacomelli | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 0.0000000 |
| shah | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | Yes | No | Cannot determine | Yes | Yes | Not applicable | No | Fair | 23.7341772 |
| bello_chavolla | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 90.0638512 |
| kolin | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.8141113 |
| lubetzky | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 77.7777778 |
| goyal | Yes | Yes | Yes | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 94.9109415 |
| feng | Yes | Yes | Yes | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 4.6218487 |
| yao | Yes | Yes | Yes | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 96.2962963 |
| sami | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 0.0000000 |
| almazeedi | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 0.0000000 |
| carillo_vega | Yes | Yes | Yes | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | NA |
| yanover | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 0.0000000 |
| hamer | Yes | No | Cannot determine | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | No | No | Not applicable | No | Fair | 0.0000000 |
| regina | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 95.5000000 |
| de_lusignan | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | Yes | Fair | 13.4402946 |
| targher | Yes | Yes | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 91.7404130 |
| valenti | Yes | No | Cannot determine | Yes | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 74.1444867 |
| feuth | Yes | Yes | Yes | Yes | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.0000000 |
| heng | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 86.2745098 |
| parrotta | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 2.6315789 |
| shekar | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 52.0000000 |
| mejia_vilet | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.0091185 |
| chen_jiang | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 90.3703704 |
| jiong | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 94.3452381 |
| rimland | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 81.8181818 |
| palaiodimos | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 0.0000000 |
| ip | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 14.6098726 |
| heili_frades | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 11.1629881 |
| vaquero_roncero | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 93.1506849 |
| kim_garg | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 0.0802890 |
| wu | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 66.6666667 |
| hopkinson | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 89.0400095 |
| shi_zhao | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 95.0495050 |
| kimmig | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 63.3333333 |
| al_hindawi | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.0000000 |
| basse | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 82.2695035 |
| freites | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 96.7479675 |
| alshami | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 82.0312500 |
| russell | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | No | Cannot determine | Yes | No | Not applicable | No | Poor | 29.2452830 |
| berumen | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 0.0000000 |
| gianfrancesco | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 13.6666667 |
| li_long | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 94.4827586 |
| batty | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 88.7665198 |
| israel | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | Yes | Cannot determine | Yes | No | Not applicable | No | Fair | 0.0000000 |
| del_valle | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | Yes | No | Cannot determine | Yes | No | Not applicable | No | Poor | 71.1590296 |
| zuo_zuo | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 72.7272727 |
| chaudhry | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 85.0000000 |
| louis | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 54.5454545 |
| soto_mota | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 88.0000000 |
| patel | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 9.6153846 |
| garibaldi | Yes | Yes | Cannot determine | Cannot determine | No | Cannot determine | Cannot determine | No | No | Cannot determine | Yes | No | Not applicable | No | Poor | 71.8750000 |
| docherty | Yes | Yes | Cannot determine | Cannot determine | No | Yes | Cannot determine | Yes | No | Cannot determine | Yes | No | Not applicable | Yes | Poor | 29.5485025 |
| boulware | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 96.7113276 |